axone-protocol / axoned

⛓️ Axone blockchain πŸ’«
https://axone.xyz
Apache License 2.0
164 stars 127 forks source link

Fix/json float support #778

Closed ccamel closed 1 month ago

ccamel commented 1 month ago

This PR introduces two main features:

Summary by CodeRabbit

codecov[bot] commented 1 month ago

Codecov Report

Attention: Patch coverage is 95.23810% with 3 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
x/logic/predicate/json.go 95.08% 2 Missing and 1 partial :warning:

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #778      +/-   ##
==========================================
+ Coverage   55.42%   55.55%   +0.12%     
==========================================
  Files          73       73              
  Lines        2966     2970       +4     
==========================================
+ Hits         1644     1650       +6     
+ Misses       1228     1227       -1     
+ Partials       94       93       -1     
Files with missing lines Coverage Ξ”
x/logic/prolog/byte.go 11.11% <100.00%> (+11.11%) :arrow_up:
x/logic/predicate/json.go 87.20% <95.08%> (+1.83%) :arrow_up:
coderabbitai[bot] commented 1 month ago

[!NOTE]

Reviews paused

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Walkthrough

The changes involve significant updates to the JSON and Prolog integration within the predicate/json.go and json_test.go files. Key modifications include renaming and altering method signatures to enhance functionality and clarity, particularly in handling Prolog terms and JSON conversions. A new function, BytesToAtom, has been introduced in byte.go to convert byte slices into Prolog atoms. The test cases have also been refined for better accuracy and clarity, ensuring they align with the updated functionality.

Changes

File Change Summary
x/logic/predicate/json.go - Renamed jsonStringToTerms to decodeJSONToTerm, updated its signature to accept engine.Term.
- Renamed termsToJSON to encodeTermToJSON, updated its signature.
- Renamed jsonToTerms to jsonToTerm, adjusted internal logic.
- Added termToJSON for specific Prolog term to JSON conversion.
- Refined compoundToJSON for better handling of Prolog compound terms.
x/logic/predicate/json_test.go - Updated test case descriptions for clarity.
- Added new test cases for JSON object strings.
- Refined handling of numeric values and updated expected results.
- Adjusted error messages and handling for boolean and null values.
x/logic/prolog/byte.go - Added BytesToAtom function to convert []byte to engine.Atom.

Suggested reviewers

🐰 In the garden where logic blooms,
JSON dances, dispelling glooms.
Prolog terms in harmony play,
With bytes transformed in a delightful way!
Clarity shines in tests anew,
Hopping forward, we bid adieu! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❀️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
πŸͺ§ Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
ccamel commented 1 month ago

@coderabbitai pause

coderabbitai[bot] commented 1 month ago
:white_check_mark: Actions performed Reviews paused.
ccamel commented 1 month ago

I was wondering about the handling of higher precisions and I think we'll need to provide string conversion predicates for such needs, what do you think?

Yeah, that’s a great idea! I totally agree that adding conversion predicates to handle those cases makes sense.

ccamel commented 1 month ago

I was wondering about the handling of higher precisions and I think we'll need to provide string conversion predicates for such needs, what do you think?

@coderabbitai, could you please open a new issue to explore the implementation of string/float conversion predicates, as suggested by @amimart? Thanks!

coderabbitai[bot] commented 1 month ago

[!TIP] For best results, initiate chat on the files or code changes.

@ccamel, I've opened a new issue to explore the implementation of string/float conversion predicates, as suggested by @amimart. You can find it here: https://github.com/axone-protocol/axoned/issues/781.

πŸ”— Analysis chain
🏁 Scripts executed The following scripts were executed for the analysis: Script: ```shell #!/bin/bash # Create a new GitHub issue as requested by @ccamel # Variables PR_NUMBER=778 PR_URL="https://github.com/axone-protocol/axoned/pull/${PR_NUMBER}" USER="ccamel" # Fetch the URL of the specific comment made by @ccamel on PR #778 COMMENTS=$(gh api repos/axone-protocol/axoned/issues/${PR_NUMBER}/comments) COMMENT_URL=$(echo "$COMMENTS" | jq -r 'reverse | .[] | select(.user.login=="'"$USER"'") | .html_url' | head -n1) # Create the new GitHub issue gh issue create \ --title "Explore implementation of string/float conversion predicates" \ --body "As suggested by @amimart in [this comment](${COMMENT_URL}), we need to explore the implementation of string/float conversion predicates to handle higher precision numbers. This issue originates from [PR #${PR_NUMBER}](${PR_URL}). Assignee: @${USER}" \ --assignee ${USER} ``` Length of output: 71688