From 6b6264d826c82c5a3f456ec1b059be618cab1aeb Mon Sep 17 00:00:00 2001 From: jayantur13 Date: Tue, 11 Jun 2024 17:54:55 +0530 Subject: [PATCH] Inital commit --- .github/FUNDING.yml | 12 ++++ .gitignore | 1 + CODE_OF_CONDUCT.md | 134 ++++++++++++++++++++++++++++++++++++++++++++ LICENSE.md | 21 +++++++ README.md | 12 ++++ images/fav.png | Bin 0 -> 544 bytes images/json.png | Bin 0 -> 27994 bytes index.html | 78 ++++++++++++++++++++++++++ js/script.js | 54 ++++++++++++++++++ styling/style.css | 82 +++++++++++++++++++++++++++ 10 files changed, 394 insertions(+) create mode 100644 .github/FUNDING.yml create mode 100644 .gitignore create mode 100644 CODE_OF_CONDUCT.md create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 images/fav.png create mode 100644 images/json.png create mode 100644 index.html create mode 100644 js/script.js create mode 100644 styling/style.css diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..d813d68 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [jayantur13] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko_fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: ["https://www.buymeacoffee.com/jayantur13v"] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..600d2d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..3688a9a --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,134 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +jayantur13@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..a666640 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 jayantur13/Jayant Navrange + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..faf51c1 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# json.validator (WIP) + +Basic type of json validation tool to validate and format json data + +# Open for + +- Contributions, enhancements etc +- Support me (sponsor) or star the repo + +# License + +This project is licensed under the [MIT Licence](https://github.com/jayantur13/json.validator/blob/master/LICENSE.md) \ No newline at end of file diff --git a/images/fav.png b/images/fav.png new file mode 100644 index 0000000000000000000000000000000000000000..6efcc03690f87ea290f3c3c1eebd3e1a7d728fe1 GIT binary patch literal 544 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 + + + + + + + JSON Validator | JSON Formatter | JSON Lint + + + + + + + + + + + + + + + + + + + + + + +
+

JSON Validator

+ +
Watch this space for error!
+
+ + +
+
+ + + + diff --git a/js/script.js b/js/script.js new file mode 100644 index 0000000..b52590e --- /dev/null +++ b/js/script.js @@ -0,0 +1,54 @@ +const validateBtn = document.getElementById("submit-btn"); +const clearBtn = document.getElementById("clear-btn"); +let defaultErrMsg = "Watch this space for error!"; + +const validateJSON = () => { + const jsonDataInput = document.getElementById("jsonDataArea").value.trim(); + let boolState; + if (jsonDataInput.length == 0 || jsonDataInput == " ") { + alert("Enter json data to validate"); + } else { + try { + boolState = JSON.parse(jsonDataInput, null, 2); + if (boolState) { + document.getElementById("jsonDataArea").style.backgroundColor = + "#D1FFBD"; + let errorMsg = document.getElementById("errorMsg"); + if (errorMsg != "Watch this space for error!") { + document.getElementById("errorMsg").innerText = defaultErrMsg; + } + } + } catch (error) { + if (error) { + document.getElementById("jsonDataArea").style.backgroundColor = + "#FFF7F7"; + document.getElementById("errorMsg").innerText = error; + } + } + } +}; + +const clearEntireThing = () => { + let jsonDataInput = document.getElementById("jsonDataArea").value; + let errorMsg = document.getElementById("errorMsg").innerText; + + if ( + jsonDataInput.length != 0 || + (jsonDataInput != " " && errorMsg === "Watch this space for error!") + ) { + document.getElementById("jsonDataArea").value = ""; + document.getElementById("jsonDataArea").style.backgroundColor = "#FFFFFF"; + } + if ( + jsonDataInput.length != 0 || + (jsonDataInput != " " && errorMsg != "Watch this space for error!") + ) { + document.getElementById("jsonDataArea").value = ""; + document.getElementById("errorMsg").innerText = defaultErrMsg; + document.getElementById("jsonDataArea").style.backgroundColor = "#FFFFFF"; + } +}; + +validateBtn.addEventListener("click", validateJSON); + +clearBtn.addEventListener("click", clearEntireThing); diff --git a/styling/style.css b/styling/style.css new file mode 100644 index 0000000..3b37d6b --- /dev/null +++ b/styling/style.css @@ -0,0 +1,82 @@ +* { + margin: 0; + padding: 0; +} + +body { + margin-bottom: 50px; +} + +.container { + margin: auto; + width: 50%; + padding: 10px; +} + +.title { + margin-top: 5px; + text-align: center; +} + +#jsonDataArea { + padding: 10px; + margin-top: 10px; + resize: none; + height: 500px; + width: 100%; + font-size: 18px; + font-family: "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", + "Lucida Sans", Arial, sans-serif; + border-radius: 5px; +} + +#errorMsg { + margin-top: 10px; + text-align: justify; + font-size: 15px; + font-family: "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", + "Lucida Sans", Arial, sans-serif; + white-space: break-spaces; + width: 100%; + height: max-content; + background-color: #fff7f7; + border-radius: 5px; + padding: 1%; +} + +.btn-controls { + margin-top: 5px; + text-align: center; +} + +.btn-controls:hover button { + cursor: pointer; +} + +#submit-btn { + border: none; + color: #ffffff; + padding: 10px; + background-color: #7ad8f8; + border-radius: 5px; + font-weight: 700; +} + +#clear-btn { + border: none; + color: #ffffff; + padding: 10px; + background-color: red; + border-radius: 5px; + font-weight: 700; +} + +.footer { + position: fixed; + padding: 10px 10px 0px 10px; + bottom: 0; + width: 100%; + height: 40px; + background: #fff7f7; + text-align: center; +}