├── testing ├── SpeedTest │ ├── JSONs │ │ ├── test-array-empty.json │ │ ├── test-obj-empty.json │ │ ├── the customProperties of DG.json │ │ ├── phpMyAdmin-config-localhost_3A8010.json │ │ ├── numberTest.json │ │ ├── Untitled-1.json │ │ ├── small.json │ │ ├── as.json │ │ ├── api geocode.xyz.json │ │ ├── color.json │ │ ├── unicode_test.json │ │ └── big_test.json │ └── SpeedTest.livecode └── Test.livecode ├── ECMA-404.pdf ├── .gitignore ├── .gitattributes ├── LICENSE ├── CODE_OF_CONDUCT.md ├── CODIGO_DE_CONDUCTA.md ├── README.md ├── LEEME.md └── PhotonJSON.livecodescript /testing/SpeedTest/JSONs/test-array-empty.json: -------------------------------------------------------------------------------- 1 | {"test":[]} -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/test-obj-empty.json: -------------------------------------------------------------------------------- 1 | {"test":{}} -------------------------------------------------------------------------------- /ECMA-404.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DTByte-Ltd/PhotonJSON/HEAD/ECMA-404.pdf -------------------------------------------------------------------------------- /testing/Test.livecode: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DTByte-Ltd/PhotonJSON/HEAD/testing/Test.livecode -------------------------------------------------------------------------------- /testing/SpeedTest/SpeedTest.livecode: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DTByte-Ltd/PhotonJSON/HEAD/testing/SpeedTest/SpeedTest.livecode -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # These extensions are ignored as these files are generated when building the widgets. 2 | *.lcdoc 3 | *.xml 4 | *.lci 5 | *.lcm 6 | *.lce -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/the customProperties of DG.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DTByte-Ltd/PhotonJSON/HEAD/testing/SpeedTest/JSONs/the customProperties of DG.json -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/phpMyAdmin-config-localhost_3A8010.json: -------------------------------------------------------------------------------- 1 | { 2 | "Console\/Mode": "collapse", 3 | "lang": "es", 4 | "NavigationWidth": 0, 5 | "ThemeDefault": "pmahomme", 6 | "FontSize": "80%" 7 | } -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/numberTest.json: -------------------------------------------------------------------------------- 1 | { 2 | "item 1": 894, 3 | "item 2": -923.21, 4 | "item 3": "One", 5 | "item 4": "two", 6 | "item 5": "three", 7 | "item 6": "Four", 8 | "item 7": "pi", 9 | "item 8": "3.125", 10 | "item 9": 7, 11 | "item 10": 15, 12 | "item 11": "ten", 13 | "item 12": "One", 14 | "item 13": "Infinity", 15 | "Item 14": 3, 16 | "Item 15": 2e10, 17 | "Item 16": 2e2, 18 | "Item 17": 4e-34 19 | } -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/Untitled-1.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "orders": [{ 3 | "currency": "pounds", 4 | "book": "Walking in Scotland", 5 | "payments": [10.0] 6 | }, 7 | { 8 | "currency": "pounds", 9 | "book": "Walking in Scotland", 10 | "payments": [10.0] 11 | } 12 | ], 13 | "address": { 14 | "last_name": "Smith", 15 | "country": "Scotland", 16 | "first_name": "John" 17 | } 18 | }] -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | *.livecodescript linguist-detectable=true 3 | *.livecode linguist-detectable=false 4 | *.html linguist-detectable=true 5 | *.json linguist-detectable=true 6 | 7 | # Set default behaviour, in case users don't have core.autocrlf set. 8 | * text=auto 9 | 10 | # Explicitly declare text files we want to always be normalized and converted 11 | # to native line endings on checkout. 12 | *.gitattributes text 13 | *.json text 14 | *.livecodescript text 15 | *.html text 16 | 17 | # Declare files that will always have LF line endings on checkout. 18 | *.json text eol=CRLF 19 | *.livecodescript text eol=CRLF 20 | *.livecodescript text eol=CRLF 21 | *.html text eol=CRLF 22 | 23 | # These files are processed by cygwin+bash so make sure they don't end with CRLF 24 | prebuilt/versions/* text eol=CRLF 25 | 26 | # Denote all files that are truly binary and should not be modified. 27 | *.png binary 28 | *.jpg binary 29 | *.jepg binary 30 | *.rev binary 31 | *.livecode binary 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 FerrusLogic 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files PhotonJSON, to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/small.json: -------------------------------------------------------------------------------- 1 | { 2 | "cClasses": [{ 3 | "Style": "4x Round + Robin", 4 | "Format": "4 of 4", 5 | "Class": "Regular - 1", 6 | "Short": "R1" 7 | }, 8 | { 9 | "Style": "Infinity", 10 | "Format": "4 of / 4", 11 | "Class": "Regular 2", 12 | "Short": "R2" 13 | }, 14 | { 15 | "Style": "4x Round, Robin", 16 | "Format": "4 of 4", 17 | "Class": "Regular 3", 18 | "Short": "R3" 19 | }, 20 | { 21 | "Style": "8 Races", 22 | "Format": "4 of 4", 23 | "Class": "Veteran 1", 24 | "Short": "V1" 25 | }, 26 | { 27 | "Style": "2x Round Robin", 28 | "Format": "4 of 4", 29 | "Class": "Multibreed 1", 30 | "Short": "M1" 31 | }, 32 | { 33 | "Style": "2x Round Robin", 34 | "Format": "4 of 4, 3 of 3", 35 | "Class": "Open 1", 36 | "Short": "O1" 37 | }, 38 | { 39 | "Style": "2x Round Robin", 40 | "Format": "4 of 4", 41 | "Class": "Open 2", 42 | "Short": "O2" 43 | } 44 | ] 45 | } -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/as.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "orders": [{ 3 | "currency": "pounds", 4 | "book": "Walking in Scotland", 5 | "payments": [10.0] 6 | }, 7 | { 8 | "currency": "pounds", 9 | "book": "The Great Outdoors", 10 | "payments": [15.0] 11 | }, 12 | { 13 | "currency": "pounds", 14 | "book": "Kilts and Stuff", 15 | "payments": [7.0, 7.0] 16 | } 17 | ], 18 | "address": { 19 | "last_name": "Smith", 20 | "country": "Scotland", 21 | "first_name": "John" 22 | } 23 | }, 24 | { 25 | "orders": [ 26 | { "currency": "euro", "book": "1001 Jokes", "payments": [5.0, 5.0] } 27 | ], 28 | "address": { 29 | "last_name": "Brown", 30 | "country": "Germany", 31 | "first_name": "Peter" 32 | } 33 | }, 34 | { 35 | "orders": [ 36 | { "currency": "pounds", "book": "Makeup and Fashion", "payments": [20.0] } 37 | ], 38 | "address": { 39 | "last_name": "Adamson", 40 | "country": "England", 41 | "first_name": "Martin" 42 | } 43 | }, 44 | { 45 | "orders": [ 46 | { "currency": "krona", "book": "Meat Ball Recipes", "payments": [12.0] }, 47 | { "currency": "krona", "book": "Ice Hotels DIY", "payments": [17.0] } 48 | ], 49 | "address": { 50 | "last_name": "King", 51 | "country": "Sweden", 52 | "first_name": "Julia" 53 | } 54 | } 55 | ] -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at support@ferruslogic.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /CODIGO_DE_CONDUCTA.md: -------------------------------------------------------------------------------- 1 | # Código de conducta del pacto de contribuyentes 2 | 3 | ## Nuestro compromiso 4 | 5 | Con el interés de fomentar un entorno abierto y acogedor, nosotros, como contribuyentes y mantenedores, nos comprometemos a hacer de la participación en nuestro proyecto y nuestra comunidad una experiencia libre de acoso para todos, independientemente de su edad, tamaño corporal, discapacidad, origen étnico, características sexuales, identidad de género y expresión, nivel de experiencia, educación, estatus socioeconómico, nacionalidad, apariencia personal, raza, religión o identidad y orientación sexual. 6 | 7 | ## Nuestras Normas 8 | 9 | Ejemplos de comportamiento que contribuye a crear un ambiente positivo incluyen: 10 | 11 | * Usar un lenguaje acogedor e inclusivo 12 | * Respetar los diferentes puntos de vista y experiencias 13 | * Aceptar con gracia las críticas constructivas 14 | * Centrarse en lo que es mejor para la comunidad 15 | * Mostrar empatía hacia otros miembros de la comunidad 16 | 17 | Ejemplos de comportamiento inaceptable por parte de los participantes incluyen: 18 | 19 | * El uso de lenguaje o imágenes sexualizadas y atención o avances sexuales no deseados 20 | * Troll, comentarios insultantes / despectivos y ataques personales o políticos 21 | * Acoso público o privado 22 | * Publicar información privada de otros, como una dirección física o electrónica, sin permiso explícito 23 | * Otra conducta que razonablemente podría considerarse inapropiada en un entorno profesional 24 | 25 | ## Nuestras responsabilidades 26 | 27 | Los encargados del mantenimiento del proyecto son responsables de aclarar los estándares de comportamiento aceptable y se espera que tomen las medidas correctivas adecuadas y justas en respuesta a cualquier caso de comportamiento inaceptable. 28 | 29 | Los responsables del proyecto tienen el derecho y la responsabilidad de eliminar, editar o rechazar comentarios, confirmaciones, códigos, ediciones de wiki, problemas y otras contribuciones que no estén alineadas con este Código de Conducta, o prohibir temporal o permanentemente a cualquier colaborador por otros comportamientos que lo consideran inapropiado, amenazante, ofensivo o dañino. 30 | 31 | ## Alcance 32 | 33 | Este Código de Conducta se aplica tanto dentro de los espacios del proyecto como en los espacios públicos cuando una persona representa el proyecto o su comunidad. Ejemplos de representación de un proyecto o comunidad incluyen el uso de una dirección de correo electrónico oficial del proyecto, la publicación a través de una cuenta oficial de redes sociales o la actuación como representante designado en un evento en línea o fuera de línea. Los encargados del mantenimiento del proyecto pueden definir y aclarar más la representación de un proyecto. 34 | 35 | ## Aplicación 36 | 37 | Los casos de comportamiento abusivo, acosador o inaceptable de cualquier otro modo se pueden informar comunicándose con el equipo del proyecto en support@ferruslogic.com. Todas las quejas serán revisadas e investigadas y resultarán en una respuesta que se considere necesaria y apropiada a las circunstancias. El equipo del proyecto está obligado a mantener la confidencialidad con respecto al informante de un incidente. Se pueden publicar más detalles de las políticas de aplicación específicas por separado. 38 | 39 | Los mantenedores del proyecto que no sigan o hagan cumplir el Código de Conducta de buena fe pueden enfrentar repercusiones temporales o permanentes según lo determinen otros miembros del liderazgo del proyecto. 40 | 41 | ## Atribución 42 | 43 | TEste Código de Conducta está adaptado del [Pacto de Colaboradores][homepage], versión 1.4, disponible en https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 44 | 45 | [homepage]: https://www.contributor-covenant.org 46 | 47 | Para obtener respuestas a preguntas comunes sobre este código de conducta, consulte https://www.contributor-covenant.org/faq 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Donate](https://img.shields.io/badge/Donate-QvaPay-green.svg)](https://qvapay.com/payme/ferruslogic?r_id=PhotonJSON&msg=Donate%20to%20Ferruslogic) 2 | 3 | # PhotonJSON: JSON library for LiveCode language 4 | [Leer en Español](LEEME.md) 5 | 6 | [LiveCode](https://livecode.com/) script library for working with JSON, written in livecode-script and without the use of external. 7 | 8 | In this library ideas converge from many developers who created solutions like this in [LiveCode](https://livecode.com/) and in other programming languages. Although there are several libraries for working with JSON in [LiveCode](https://livecode.com/). We it a personal challenge to create our own version for which we took as a basis the great work done by Bob Hall in the [FastJSON](https://github.com/bhall2001/fastjson) library. We needed a library like [FastJSON](https://github.com/bhall2001/fastjson) and with the speed of Mount Goulding's [mergJSON](https://github.com/montegoulding/mergJSON). So we started writing PhotonJSON using FastJSON's ideas and code as a base, although in some cases we completely rewrote the algorithms. 9 | 10 | 11 | 12 | ## PhotonJSON improvements. 13 | 14 | In PhotonJSON, a certain degree of optimization was achieved in the processes of analyzing a JSON. Therefore, the library has a performance very close to that obtained in mergJSON. Not forgetting that the latter makes use of an external that processes at a lower level than LiveCode and therefore is a little faster. These are some of the improvements we found in PhotonJSON. 15 | 1. Convert a JSON to an LC Array in a less time equal to or very close to that of mergJSON. 16 | 2. When converting an LC Array to JSON you can specify whether the JSON is beautifully formatted. 17 | 3. Added a nice formatting function and another to minify existing JSON. 18 | 19 | 20 | 21 | ## How to use PhotonJSON 22 | 23 | To use PhotonJSON in your desktop or mobile applications you just have to load the library 24 | 25 | ``` 26 | start using stack "PhotonJSON" 27 | ``` 28 | 29 | If you are going to use PhotonJSON in your server application, you must create a plain text file with the extension .lc and copy the script from the PhotonJSON stack to this file without including the first line of it ("PhotonJSON" script). 30 | 31 | ``` 32 | 33 | ``` 34 | 35 | We already have PhotonJSON integrated into our project. So, we can access all the functions and properties of it. 36 | 37 | 38 | 39 | > **NOTE** 40 | > *Before continuing, let's clarify that in LiveCode if two libraries have a function with the same name. If this function is called from any other side of the code, the one from the last library that was called will be executed, that is, the one that is first in the message path.* 41 | 42 | 43 | 44 | PhotonJSON has 5 functions and a public property that is, they can be accessed from another script. It also integrates 4 functions for compatibility with projects that use other libraries and want to start using this one. Please note the above note. 45 | 46 | | Name | Type | Parameter | Returns | Description | 47 | | :------------ | -------- | ------------------------------------------------------------ | ----------------- | ------------------------------------------- | 48 | | validateJSON | function | UTF-8 JSON string | Boolean | Validate if a string is a valid JSON. | 49 | | minifyJSON | function | UTF-8 JSON string | UTF-8 JSON string | Remove unnecessary spaces from JSON string. | 50 | | beautifyJSON | function | J UTF-8 JSON string | UTF-8 JSON string | JSON string formatted in a more visually pleasing way. | 51 | | JSONStringify | function | LC Array, if the type of the JSON elements is forced and if it is formatted in a beautiful way | UTF-8 JSON string | Gets the JSON string from an LC Array. | 52 | | JSONParser | function | UTF-8 JSON string | LC Array | Gets the LC Array of a JSON string. | 53 | 54 | These are the four functions that are optionally included for PhotonJSON compatibility with projects that use mergeJSON or FastJSON. They expect the same parameters as in their original versions and in the same order. 55 | 56 | ``` 57 | ArrayToJSON(), JsonToArray(), arrayFromJson(), and jsonFromArray(). 58 | ``` 59 | 60 | If you don't want PhotonJSON to overwrite the previous functions, just comment the code for it in the PhotonJSON library. 61 | 62 | 63 | > [!IMPORTANT] 64 | >**Why don't we use these names for the library and use `JSONStringify` and `JSONParser` as in the HTML5 API.** 65 | > 66 | >*Since we created this library to be used in a plugin that will be integrated with the LiveCode IDE and as we clarify in the note. When a function is called and it is in two libraries, the first one in the path will take precedence over the others. So in order not to interfere with other projects where you don't want to use this library, we decided to use this naming convention and not include the others.* 67 | 68 | 69 | 70 | ### Copyright (C) 2020 FerrusLogic 71 | -------------------------------------------------------------------------------- /LEEME.md: -------------------------------------------------------------------------------- 1 | [![Donate](https://img.shields.io/badge/Donate-QvaPay-green.svg)](https://qvapay.com/payme/ferruslogic?r_id=PhotonJSON&msg=Donate%20to%20Ferruslogic) 2 | # PhotonJSON: Biblioteca JSON para el lenguaje de programación Livecode 3 | [Reading in English](README.md) 4 | 5 | Biblioteca de LiveCode scripts para trabajar con JSON, escrito en livecode-script y sin el uso de externos. 6 | 7 | En esta biblioteca, convergen las ideas de muchos desarrolladores que crearon soluciones como esta en LiveCode y en otros lenguajes de programación. Aunque existen varias bibliotecas para trabajar con JSON en LiveCode. Nos planteamos un reto personal, crear nuestra propia versión para lo cual tomamos como base el gran trabajo realizado por Bob Hall en la librería FastJSON. Necesitábamos una biblioteca como FastJSON y con la velocidad del mergJSON de Mount Goulding. Así que empezamos a escribir PhotonJSON usando las ideas y el código de FastJSON como base, aunque en algunos casos reescribimos por completo los algoritmos. 8 | ## Mejoras de PhotonJSON. 9 | 10 | Biblioteca de LiveCode scripts para trabajar con JSON, escrito en livecode-script y sin el uso de externos. 11 | 12 | En esta biblioteca, convergen las ideas de muchos desarrolladores que crearon soluciones como esta en LiveCode y en otros lenguajes de programación. Aunque existen varias bibliotecas para trabajar con JSON en LiveCode. Nos planteamos un reto personal, crear nuestra propia versión para lo cual tomamos como base el gran trabajo realizado por Bob Hall en la librería FastJSON. Necesitábamos una biblioteca como FastJSON y con la velocidad del mergJSON de Mount Goulding. Así que empezamos a escribir PhotonJSON usando las ideas y el código de FastJSON como base, aunque en algunos casos reescribimos por completo los algoritmos. 13 | En PhotonJSON, se logró cierto grado de optimización en los procesos de análisis de un JSON. Por tanto, la librería tiene un rendimiento muy cercano al obtenido en mergJSON. Sin olvidar que este último hace uso de un externo que procesa a un nivel menor que LiveCode y por tanto es un poco más rápido. Estas son algunas de las mejoras que encontramos en PhotonJSON. 14 | 1. Convierta un JSON en un Array LC en un tiempo menor, igual o muy cercano al de mergJSON. 15 | 2. Al convertir un Array LC a JSON, puede especificar si el JSON tiene un formato bonito. 16 | 3. Se agrega una función de formato agradable y otra para minimizar los JSON existentes. 17 | 18 | ## Como usar PhotonJSON 19 | 20 | Para utilizar PhotonJSON en su escritorio o aplicaciones móviles solo tiene que cargar la biblioteca 21 | 22 | ``` 23 | start using stack"PhotonJSON" 24 | ``` 25 | 26 | Si va a utilizar PhotonJSON en su aplicación de servidor, debe crear un archivo de texto sin formato con la extensión .lc y copiar el script de la pila PhotonJSON a este archivo sin incluir la primera línea (script "PhotonJSON"). 27 | 28 | ``` 29 | 30 | ``` 31 | 32 | Ya tenemos PhotonJSON integrado en nuestro proyecto. Entonces, podemos acceder a todas las funciones y propiedades de la biblioteca. 33 | 34 | > **NOTA** 35 | > 36 | > *Antes de continuar, aclaremos que en LiveCode si dos bibliotecas tienen una función con el mismo nombre. Si se llama a esta función desde cualquier otro lado del código, se ejecutará la de la última biblioteca que se llamé, es decir, la primera en la ruta del mensaje. * 37 | 38 | PhotonJSON tiene 5 funciones y una propiedad pública que se puede acceder a ellas desde otro script. También integra 4 funciones para compatibilidad con proyectos que usan otras bibliotecas y quieren comenzar a usar esta. Tenga en cuenta la nota anterior. 39 | 40 | | Nombre | Tipo | Parámetro | Devoluciones | Descripción | 41 | | ------------- | --------- | ------------------------------------------------------------ | ------------------ | ------------------------------------------------------------ | 42 | | validateJSON | función | Cadena JSON UTF-8 | Booleano | Valide si una cadena es un JSON. | 43 | | minifyJSON | función | JSON UTF-8 | Cadena JSON UTF-8 | Elimina los espacios innecesarios de la cadena JSON. | 44 | | beautifyJSON | función | Cadena JSON UTF-8 | Cadena JSON UTF-8 | Formatea una cadena JSON de una manera más agradable a la vista. | 45 | | JSONStringify | función | LC Array, si se fuerza el tipo de los elementos del JSON y si se formatea de forma bonita | Cadena JSON UTF-8 | Obtiene la cadena JSON de una matriz LC. | 46 | | JSONParser | función | Cadena JSON UTF-8 | LC Array | Obtiene la matriz LC de una cadena JSON. | 47 | 48 | Estas son las cuatro funciones que se incluyen opcionalmente para la compatibilidad de PhotonJSON con proyectos que usan mergeJSON o FastJSON. Esperan los mismos parámetros que en sus versiones originales y en el mismo orden. 49 | 50 | ``` 51 | ArrayToJSON(), JsonToArray(), arrayFromJson() y jsonFromArray(). 52 | ``` 53 | 54 | Si no desea que PhotonJSON sobrescriba las funciones anteriores, simplemente comente el código en la biblioteca PhotonJSON. 55 | 56 | > **¿Por qué no usamos estos nombres para la biblioteca y usamos JSONStringify y JSONParser como en la API HTML5? ** 57 | > 58 | > *Creamos esta librería para ser utilizada en un plugin que se integraré con el IDE de LiveCode y como aclaramos en la nota. Cuando se llama a una función y está en dos bibliotecas, la primera de la ruta tendrá prioridad sobre las demás. Entonces, para no interferir con otros proyectos en los que no desea usar esta biblioteca, decidimos usar esta convención de nomenclatura y no incluir las demás.* 59 | 60 | ### Copyright (C) 2020 FerrusLogic S.A. 61 | 62 | -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/api geocode.xyz.json: -------------------------------------------------------------------------------- 1 | { 2 | "statename": {}, 3 | "distance": "0.044", 4 | "elevation": "501", 5 | "osmtags": { 6 | "wikipedia": "es:Petrer (Alicante)", 7 | "source": "BDLL25, EGRN, Instituto Geográfico Nacional", 8 | "population": "34634", 9 | "idee_name": "Petrer", 10 | "ine_municipio": "03104", 11 | "is_in_region": "Comunidad Valenciana", 12 | "is_in_province": "Alicante", 13 | "boundary": "administrative", 14 | "wikidata": "Q1751353", 15 | "is_in": "Alicante, Comunidad Valenciana, Spain", 16 | "name": "Petrer", 17 | "name_ca": "Petrer", 18 | "is_in_country": "Spain", 19 | "admin_level": "8", 20 | "population_date": "2009", 21 | "type": "boundary" 22 | }, 23 | "state": "Comunidad Valenciana", 24 | "latt": "38.48894", 25 | "city": "Elda", 26 | "prov": "ES", 27 | "intersection": { 28 | "distance": "0.061", 29 | "xlat": "38.48932", 30 | "xlon": "-0.78368", 31 | "street2": "Avinguda Prevere Conrado Poveda", 32 | "street1": "Avinguda Rosalía de Castro" 33 | }, 34 | "geocode": "ELDA-DDPTK", 35 | "geonumber": "3163180166780", 36 | "country": "Spain", 37 | "stnumber": "3", 38 | "staddress": "PL GUIRNEY- SAN RAFAEL", 39 | "inlatt": "38.48880", 40 | "alt": { 41 | "loc": [{ 42 | "staddress": "PL GUIRNEY- SAN RAFAEL", 43 | "stnumber": "3", 44 | "postal": "3610", 45 | "latt": "38.48894", 46 | "city": "Petrer", 47 | "prov": "Valencian Community", 48 | "longt": "-0.78392", 49 | "class": {} 50 | }, 51 | { 52 | "staddress": "PL GUIRNEY- SAN RAFAEL", 53 | "stnumber": "3", 54 | "postal": "3610", 55 | "latt": "38.48894", 56 | "city": "Elda", 57 | "prov": "Comunidad Valenciana", 58 | "longt": "-0.78392", 59 | "class": {} 60 | }, 61 | { 62 | "staddress": "Place Guirney- San Rafael", 63 | "stnumber": "3", 64 | "postal": {}, 65 | "latt": "38.48894", 66 | "city": "Elda", 67 | "prov": "Comunidad Valenciana", 68 | "longt": "-0.78392", 69 | "class": {} 70 | }, 71 | { 72 | "staddress": "Avinguda Prevere Conrado Poveda", 73 | "stnumber": "1", 74 | "postal": {}, 75 | "dist": "0.067", 76 | "latt": "38.48932", 77 | "city": "Petrer", 78 | "prov": "Comunidad Valenciana", 79 | "longt": "-0.78385", 80 | "class": {} 81 | }, 82 | { 83 | "staddress": "Avinguda Rosalía de Castro", 84 | "stnumber": "1", 85 | "postal": {}, 86 | "dist": "0.058", 87 | "latt": "38.48932", 88 | "city": "Petrer", 89 | "prov": "Comunidad Valenciana", 90 | "longt": "-0.78351", 91 | "class": {} 92 | }, 93 | { 94 | "staddress": "PL GUIRNEY- SAN RAFAEL", 95 | "stnumber": "3", 96 | "postal": "3610", 97 | "dist": "0.044", 98 | "latt": "38.48894", 99 | "city": "Petrer", 100 | "prov": "Valencian Community", 101 | "longt": "-0.78392", 102 | "class": {} 103 | } 104 | ] 105 | }, 106 | "timezone": "Europe/Madrid", 107 | "region": "Provincia de Alicante, Valencia", 108 | "postal": "3610", 109 | "poi": { 110 | "amenity": "parking", 111 | "poilat": "38.48891", 112 | "parking": "surface", 113 | "poilon": "-0.78311", 114 | "name": "Parking Público Gratuito", 115 | "id": "163760477", 116 | "poidist": "0.032" 117 | }, 118 | "longt": "-0.78392", 119 | "remaining_credits": {}, 120 | "confidence": "0.9", 121 | "inlongt": "-0.78345", 122 | "class": {}, 123 | "adminareas": { 124 | "admin7": { 125 | "wikipedia": "es:Medio Vinalopó", 126 | "source": "Institut Cartogràfic Valencià, Generalitat", 127 | "is_in_region": "Comunitat Valenciana", 128 | "place": "region", 129 | "name_ru": "Виналопо-Митха", 130 | "alt_name_ca": "Vinalopó Mitjà", 131 | "boundary": "administrative", 132 | "wikidata": "Q2300692", 133 | "is_in_continent": "Europe", 134 | "is_in": "Comunitat Valenciana;Spain;Europe", 135 | "name": "el Vinalopó Mitjà / El Vinalopó Medio", 136 | "name_ca": "el Vinalopó Mitjà", 137 | "name_es": "El Vinalopó Medio", 138 | "is_in_country": "Spain", 139 | "admin_level": "7", 140 | "alt_name_es": "Vinalopó Medio", 141 | "level": "7", 142 | "type": "boundary", 143 | "rank": "region" 144 | }, 145 | "admin6": { 146 | "name_de": "Alicante", 147 | "name_sr": "Аликанте", 148 | "is_in_region": "Comunitat Valenciana", 149 | "official_name_es": "Provincia de Alicante", 150 | "boundary": "administrative", 151 | "name_el": "Αλικάντε", 152 | "is_in_continent": "Europe", 153 | "name": "Alacant / Alicante", 154 | "ISO3166_2": "ES-A", 155 | "name_hu": "Alicante", 156 | "is_in_country": "Spain", 157 | "level": "6", 158 | "name_ar": "أليكانتي", 159 | "official_name_en": "Province of Alicante", 160 | "type": "boundary", 161 | "name_nl": "Alicante", 162 | "name_eu": "Alacant", 163 | "name_fr": "Alicante", 164 | "wikipedia": "es:Provincia de Alicante", 165 | "source": "BDLL25, EGRN, Instituto Geográfico Nacional", 166 | "official_name_ar": "منطقة أليكانتي", 167 | "is_in_country_code": "ES", 168 | "name_be": "Алікантэ", 169 | "name_ru": "Аликанте", 170 | "official_name_ca": "Província d'Alacant", 171 | "official_name_fr": "Province d'Alicante", 172 | "wikidata": "Q54936", 173 | "is_in_region_code": "10", 174 | "is_in": "Europe;Spain;Comunidad Valenciana", 175 | "official_name": "Provincia de Alacant/Alicante", 176 | "name_ca": "Alacant", 177 | "name_es": "Alicante", 178 | "ine_provincia": "03", 179 | "admin_level": "6", 180 | "official_name_de": "Provinz Alicante", 181 | "official_name_be": "Правінцыя Алікантэ", 182 | "border_type": "province" 183 | }, 184 | "admin8": { 185 | "wikipedia": "es:Petrer (Alicante)", 186 | "source": "BDLL25, EGRN, Instituto Geográfico Nacional", 187 | "population": "34634", 188 | "idee_name": "Petrer", 189 | "ine_municipio": "03104", 190 | "is_in_region": "Comunidad Valenciana", 191 | "is_in_province": "Alicante", 192 | "boundary": "administrative", 193 | "wikidata": "Q1751353", 194 | "is_in": "Alicante, Comunidad Valenciana, Spain", 195 | "name": "Petrer", 196 | "name_ca": "Petrer", 197 | "is_in_country": "Spain", 198 | "admin_level": "8", 199 | "level": "8", 200 | "population_date": "2009", 201 | "type": "boundary" 202 | } 203 | }, 204 | "altgeocode": "MONASTIL-DDPTK" 205 | } -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/color.json: -------------------------------------------------------------------------------- 1 | { "mainColors":{ 2 | "red":{ 3 | "hex":"#f44336", 4 | "name":"Red", 5 | "alternates":{ 6 | "a50":"#FFEBEE", 7 | "a100":"#FFCDD2", 8 | "a200":"#EF9A9A", 9 | "a300":"#E57373", 10 | "a400":"#EF5350", 11 | "a500":"#F44336", 12 | "a600":"#E53935", 13 | "a700":"#D32F2F", 14 | "a800":"#C62828", 15 | "a900":"#B71C1C", 16 | "A100":"#FF8A80", 17 | "A200":"#FF5252", 18 | "A400":"#FF1744", 19 | "A700":"#D50000" 20 | } 21 | }, 22 | "pink":{ 23 | "hex":"#E91E63", 24 | "name":"Pink", 25 | "alternates":{ 26 | "a50":"#FCE4EC", 27 | "a100":"#F8BBD0", 28 | "a200":"#F48FB1", 29 | "a300":"#F06292", 30 | "a400":"#EC407A", 31 | "a500":"#E91E63", 32 | "a600":"#D81B60", 33 | "a700":"#C2185B", 34 | "a800":"#AD1457", 35 | "a900":"#880E4F", 36 | "A100":"#FF80AB", 37 | "A200":"#FF4081", 38 | "A400":"#F50057", 39 | "A700":"#C51162" 40 | } 41 | }, 42 | "purple":{ 43 | "hex":"#9C27B0", 44 | "name":"Purple", 45 | "alternates":{ 46 | "a50":"#F3E5F5", 47 | "a100":"#E1BEE7", 48 | "a200":"#CE93D8", 49 | "a300":"#BA68C8", 50 | "a400":"#AB47BC", 51 | "a500":"#9C27B0", 52 | "a600":"#8E24AA", 53 | "a700":"#7B1FA2", 54 | "a800":"#6A1B9A", 55 | "a900":"#4A148C", 56 | "A100":"#EA80FC", 57 | "A200":"#E040FB", 58 | "A400":"#D500F9", 59 | "A700":"#AA00FF" 60 | } 61 | }, 62 | "deepPurple":{ 63 | "hex":"#673AB7", 64 | "name":"Deep Purple", 65 | "alternates":{ 66 | "a50":"#EDE7F6", 67 | "a100":"#D1C4E9", 68 | "a200":"#B39DDB", 69 | "a300":"#9575CD", 70 | "a400":"#7E57C2", 71 | "a500":"#673AB7", 72 | "a600":"#5E35B1", 73 | "a700":"#512DA8", 74 | "a800":"#4527A0", 75 | "a900":"#311B92", 76 | "A100":"#B388FF", 77 | "A200":"#7C4DFF", 78 | "A400":"#651FFF", 79 | "A700":"#6200EA" 80 | } 81 | }, 82 | "indigo":{ 83 | "hex":"#3F51B5", 84 | "name":"Indigo", 85 | "alternates":{ 86 | "a50":"#E8EAF6", 87 | "a100":"#C5CAE9", 88 | "a200":"#9FA8DA", 89 | "a300":"#7986CB", 90 | "a400":"#5C6BC0", 91 | "a500":"#3F51B5", 92 | "a600":"#3949AB", 93 | "a700":"#303F9F", 94 | "a800":"#283593", 95 | "a900":"#1A237E", 96 | "A100":"#8C9EFF", 97 | "A200":"#536DFE", 98 | "A400":"#3D5AFE", 99 | "A700":"#304FFE" 100 | } 101 | }, 102 | "blue":{ 103 | "hex":"#2196F3", 104 | "name":"Blue", 105 | "alternates":{ 106 | "a50":"#E3F2FD", 107 | "a100":"#BBDEFB", 108 | "a200":"#90CAF9", 109 | "a300":"#64B5F6", 110 | "a400":"#42A5F5", 111 | "a500":"#2196F3", 112 | "a600":"#1E88E5", 113 | "a700":"#1976D2", 114 | "a800":"#1565C0", 115 | "a900":"#0D47A1", 116 | "A100":"#82B1FF", 117 | "A200":"#448AFF", 118 | "A400":"#2979FF", 119 | "A700":"#2962FF" 120 | } 121 | }, 122 | "lightBlue":{ 123 | "hex":"#03A9F4", 124 | "name":"Light Blue", 125 | "alternates":{ 126 | "a50":"#E1F5FE", 127 | "a100":"#B3E5FC", 128 | "a200":"#81D4FA", 129 | "a300":"#4FC3F7", 130 | "a400":"#29B6F6", 131 | "a500":"#03A9F4", 132 | "a600":"#039BE5", 133 | "a700":"#0288D1", 134 | "a800":"#0277BD", 135 | "a900":"#01579B", 136 | "A100":"#80D8FF", 137 | "A200":"#40C4FF", 138 | "A400":"#00B0FF", 139 | "A700":"#0091EA" 140 | } 141 | }, 142 | "cyan":{ 143 | "hex":"#00BCD4", 144 | "name":"Cyan", 145 | "alternates":{ 146 | "a50":"#E0F7FA", 147 | "a100":"#B2EBF2", 148 | "a200":"#80DEEA", 149 | "a300":"#4DD0E1", 150 | "a400":"#26C6DA", 151 | "a500":"#00BCD4", 152 | "a600":"#00ACC1", 153 | "a700":"#0097A7", 154 | "a800":"#00838F", 155 | "a900":"#006064", 156 | "A100":"#84FFFF", 157 | "A200":"#18FFFF", 158 | "A400":"#00E5FF", 159 | "A700":"#00B8D4" 160 | } 161 | }, 162 | "teal":{ 163 | "hex":"#009688", 164 | "name":"Teal", 165 | "alternates":{ 166 | "a50":"#E0F2F1", 167 | "a100":"#B2DFDB", 168 | "a200":"#80CBC4", 169 | "a300":"#4DB6AC", 170 | "a400":"#26A69A", 171 | "a500":"#009688", 172 | "a600":"#00897B", 173 | "a700":"#00796B", 174 | "a800":"#00695C", 175 | "a900":"#004D40", 176 | "A100":"#A7FFEB", 177 | "A200":"#64FFDA", 178 | "A400":"#1DE9B6", 179 | "A700":"#00BFA5" 180 | } 181 | }, 182 | "green":{ 183 | "hex":"#4CAF50", 184 | "name":"Green", 185 | "alternates":{ 186 | "a50":"#E8F5E9", 187 | "a100":"#C8E6C9", 188 | "a200":"#A5D6A7", 189 | "a300":"#81C784", 190 | "a400":"#66BB6A", 191 | "a500":"#4CAF50", 192 | "a600":"#43A047", 193 | "a700":"#388E3C", 194 | "a800":"#2E7D32", 195 | "a900":"#1B5E20", 196 | "A100":"#B9F6CA", 197 | "A200":"#69F0AE", 198 | "A400":"#00E676", 199 | "A700":"#00C853" 200 | } 201 | }, 202 | "lightGreen":{ 203 | "hex":"#8BC34A", 204 | "name":"Light Green", 205 | "alternates":{ 206 | "a50":"#F1F8E9", 207 | "a100":"#DCEDC8", 208 | "a200":"#C5E1A5", 209 | "a300":"#AED581", 210 | "a400":"#9CCC65", 211 | "a500":"#8BC34A", 212 | "a600":"#7CB342", 213 | "a700":"#689F38", 214 | "a800":"#558B2F", 215 | "a900":"#33691E", 216 | "A100":"#CCFF90", 217 | "A200":"#B2FF59", 218 | "A400":"#76FF03", 219 | "A700":"#64DD17" 220 | } 221 | }, 222 | "lime":{ 223 | "hex":"#CDDC39", 224 | "name":"Lime", 225 | "alternates":{ 226 | "a50":"#F9FBE7", 227 | "a100":"#F0F4C3", 228 | "a200":"#E6EE9C", 229 | "a300":"#DCE775", 230 | "a400":"#D4E157", 231 | "a500":"#CDDC39", 232 | "a600":"#C0CA33", 233 | "a700":"#AFB42B", 234 | "a800":"#9E9D24", 235 | "a900":"#827717", 236 | "A100":"#F4FF81", 237 | "A200":"#EEFF41", 238 | "A400":"#C6FF00", 239 | "A700":"#AEEA00" 240 | } 241 | }, 242 | "yellow":{ 243 | "hex":"#FFEB3B", 244 | "name":"Yellow", 245 | "alternates":{ 246 | "a50":"#FFFDE7", 247 | "a100":"#FFF9C4", 248 | "a200":"#FFF59D", 249 | "a300":"#FFF176", 250 | "a400":"#FFEE58", 251 | "a500":"#FFEB3B", 252 | "a600":"#FDD835", 253 | "a700":"#FBC02D", 254 | "a800":"#F9A825", 255 | "a900":"#F57F17", 256 | "A100":"#FFFF8D", 257 | "A200":"#FFFF00", 258 | "A400":"#FFEA00", 259 | "A700":"#FFD600" 260 | } 261 | }, 262 | "amber":{ 263 | "hex":"#FFC107", 264 | "name":"Amber", 265 | "alternates":{ 266 | "a50":"#FFF8E1", 267 | "a100":"#FFECB3", 268 | "a200":"#FFE082", 269 | "a300":"#FFD54F", 270 | "a400":"#FFCA28", 271 | "a500":"#FFC107", 272 | "a600":"#FFB300", 273 | "a700":"#FFA000", 274 | "a800":"#FF8F00", 275 | "a900":"#FF6F00", 276 | "A100":"#FFE57F", 277 | "A200":"#FFD740", 278 | "A400":"#FFC400", 279 | "A700":"#FFAB00" 280 | } 281 | }, 282 | "orange":{ 283 | "hex":"#FF9800", 284 | "name":"Orange", 285 | "alternates":{ 286 | "a50":"#FFF3E0", 287 | "a100":"#FFE0B2", 288 | "a200":"#FFCC80", 289 | "a300":"#FFB74D", 290 | "a400":"#FFA726", 291 | "a500":"#FF9800", 292 | "a600":"#FB8C00", 293 | "a700":"#F57C00", 294 | "a800":"#EF6C00", 295 | "a900":"#E65100", 296 | "A100":"#FFD180", 297 | "A200":"#FFAB40", 298 | "A400":"#FF9100", 299 | "A700":"#FF6D00" 300 | } 301 | }, 302 | "deepOrange":{ 303 | "hex":"#FF5722", 304 | "name":"Deep Orange", 305 | "alternates":{ 306 | "a50":"#FBE9E7", 307 | "a100":"#FFCCBC", 308 | "a200":"#FFAB91", 309 | "a300":"#FF8A65", 310 | "a400":"#FF7043", 311 | "a500":"#FF5722", 312 | "a600":"#F4511E", 313 | "a700":"#E64A19", 314 | "a800":"#D84315", 315 | "a900":"#BF360C", 316 | "A100":"#FF9E80", 317 | "A200":"#FF6E40", 318 | "A400":"#FF3D00", 319 | "A700":"#DD2C00" 320 | } 321 | }, 322 | "brown":{ 323 | "hex":"#795548", 324 | "name":"Brown", 325 | "alternates":{ 326 | "a50":"#EFEBE9", 327 | "a100":"#D7CCC8", 328 | "a200":"#BCAAA4", 329 | "a300":"#A1887F", 330 | "a400":"#8D6E63", 331 | "a500":"#795548", 332 | "a600":"#6D4C41", 333 | "a700":"#5D4037", 334 | "a800":"#4E342E", 335 | "a900":"#3E2723" 336 | } 337 | }, 338 | "grey":{ 339 | "hex":"#9E9E9E", 340 | "name":"Grey", 341 | "alternates":{ 342 | "a50":"#FAFAFA", 343 | "a100":"#F5F5F5", 344 | "a200":"#EEEEEE", 345 | "a300":"#E0E0E0", 346 | "a400":"#BDBDBD", 347 | "a500":"#9E9E9E", 348 | "a600":"#757575", 349 | "a700":"#616161", 350 | "a800":"#424242", 351 | "a900":"#212121" 352 | } 353 | }, 354 | "blueGrey":{ 355 | "hex":"#607D8B", 356 | "name":"Blue Grey", 357 | "alternates":{ 358 | "a50":"#ECEFF1", 359 | "a100":"#CFD8DC", 360 | "a200":"#B0BEC5", 361 | "a300":"#90A4AE", 362 | "a400":"#78909C", 363 | "a500":"#607D8B", 364 | "a600":"#546E7A", 365 | "a700":"#455A64", 366 | "a800":"#37474F", 367 | "a900":"#263238" 368 | } 369 | } 370 | } , 371 | 372 | "alternateNames":["50","100","200","300","400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"] 373 | } -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/unicode_test.json: -------------------------------------------------------------------------------- 1 | { 2 | "someData": [{ 3 | "id": 1, 4 | "name": "Tammy Simmons", 5 | "money": "$4.73", 6 | "chinese_name": "银含" 7 | }, 8 | { 9 | "id": 2, 10 | "name": "Lillian Phillips", 11 | "money": "$6.31", 12 | "chinese_name": "澄泓" 13 | }, 14 | { 15 | "id": 3, 16 | "name": "Heather Turner", 17 | "money": "$6.84", 18 | "chinese_name": "澄泓" 19 | }, 20 | { 21 | "id": 4, 22 | "name": "Janice Ruiz", 23 | "money": "$2.81", 24 | "chinese_name": "茹雪" 25 | }, 26 | { 27 | "id": 5, 28 | "name": "Jean Wagner", 29 | "money": "$7.64", 30 | "chinese_name": "雪丽" 31 | }, 32 | { 33 | "id": 6, 34 | "name": "Russell Hunter", 35 | "money": "$1.27", 36 | "chinese_name": "晓晴" 37 | }, 38 | { 39 | "id": 7, 40 | "name": "Todd Graham", 41 | "money": "$2.13", 42 | "chinese_name": "军卿" 43 | }, 44 | { 45 | "id": 8, 46 | "name": "Laura Riley", 47 | "money": "$3.72", 48 | "chinese_name": "梓彤" 49 | }, 50 | { 51 | "id": 9, 52 | "name": "Ernest Warren", 53 | "money": "$7.21", 54 | "chinese_name": "军卿" 55 | }, 56 | { 57 | "id": 10, 58 | "name": "Tammy Gutierrez", 59 | "money": "$5.81", 60 | "chinese_name": "婧琪" 61 | }, 62 | { 63 | "id": 11, 64 | "name": "Victor Burns", 65 | "money": "$8.59", 66 | "chinese_name": "博裕" 67 | }, 68 | { 69 | "id": 12, 70 | "name": "Daniel Perez", 71 | "money": "$6.12", 72 | "chinese_name": "若瑾" 73 | }, 74 | { 75 | "id": 13, 76 | "name": "Brian Meyer", 77 | "money": "$7.51", 78 | "chinese_name": "云哲" 79 | }, 80 | { 81 | "id": 14, 82 | "name": "Lori Marshall", 83 | "money": "$3.34", 84 | "chinese_name": "唯枫" 85 | }, 86 | { 87 | "id": 15, 88 | "name": "Shawn Thompson", 89 | "money": "$0.59", 90 | "chinese_name": "奕漳" 91 | }, 92 | { 93 | "id": 16, 94 | "name": "Jose Martin", 95 | "money": "$5.69", 96 | "chinese_name": "秩选" 97 | }, 98 | { 99 | "id": 17, 100 | "name": "Jesse Medina", 101 | "money": "$0.57", 102 | "chinese_name": "澄泓" 103 | }, 104 | { 105 | "id": 18, 106 | "name": "Victor Lane", 107 | "money": "$6.12", 108 | "chinese_name": "远帆" 109 | }, 110 | { 111 | "id": 19, 112 | "name": "Lisa Cunningham", 113 | "money": "$4.89", 114 | "chinese_name": "晧宇" 115 | }, 116 | { 117 | "id": 20, 118 | "name": "Julie Watson", 119 | "money": "$6.17", 120 | "chinese_name": "浩霖" 121 | }, 122 | { 123 | "id": 21, 124 | "name": "Rose Miller", 125 | "money": "$6.78", 126 | "chinese_name": "琪煜" 127 | }, 128 | { 129 | "id": 22, 130 | "name": "Janet Morales", 131 | "money": "$8.32", 132 | "chinese_name": "思宏" 133 | }, 134 | { 135 | "id": 23, 136 | "name": "Tammy Hanson", 137 | "money": "$9.82", 138 | "chinese_name": "月松" 139 | }, 140 | { 141 | "id": 24, 142 | "name": "Michelle Peters", 143 | "money": "$4.60", 144 | "chinese_name": "思宇" 145 | }, 146 | { 147 | "id": 25, 148 | "name": "Jack Palmer", 149 | "money": "$3.74", 150 | "chinese_name": "凰羽" 151 | }, 152 | { 153 | "id": 26, 154 | "name": "Gregory Thomas", 155 | "money": "$5.38", 156 | "chinese_name": "梓焓" 157 | }, 158 | { 159 | "id": 27, 160 | "name": "Shirley Black", 161 | "money": "$1.29", 162 | "chinese_name": "佐仪" 163 | }, 164 | { 165 | "id": 28, 166 | "name": "James Martin", 167 | "money": "$6.10", 168 | "chinese_name": "伟菘" 169 | }, 170 | { 171 | "id": 29, 172 | "name": "Sarah Rose", 173 | "money": "$9.85", 174 | "chinese_name": "宸瑜" 175 | }, 176 | { 177 | "id": 30, 178 | "name": "Earl Cunningham", 179 | "money": "$9.12", 180 | "chinese_name": "佐仪" 181 | }, 182 | { 183 | "id": 31, 184 | "name": "Sandra Murray", 185 | "money": "$4.51", 186 | "chinese_name": "昕磊" 187 | }, 188 | { 189 | "id": 32, 190 | "name": "Harry Little", 191 | "money": "$7.53", 192 | "chinese_name": "奕漳" 193 | }, 194 | { 195 | "id": 33, 196 | "name": "Andrew Allen", 197 | "money": "$6.78", 198 | "chinese_name": "漫妮" 199 | }, 200 | { 201 | "id": 34, 202 | "name": "Bobby Pierce", 203 | "money": "$5.45", 204 | "chinese_name": "宇涵" 205 | }, 206 | { 207 | "id": 35, 208 | "name": "Todd Richardson", 209 | "money": "$6.31", 210 | "chinese_name": "思宏" 211 | }, 212 | { 213 | "id": 36, 214 | "name": "Randy Dunn", 215 | "money": "$4.89", 216 | "chinese_name": "崇杉" 217 | }, 218 | { 219 | "id": 37, 220 | "name": "Roy Medina", 221 | "money": "$2.72", 222 | "chinese_name": "睿杰" 223 | }, 224 | { 225 | "id": 38, 226 | "name": "Gregory Fuller", 227 | "money": "$4.22", 228 | "chinese_name": "昕磊" 229 | }, 230 | { 231 | "id": 39, 232 | "name": "Brandon Berry", 233 | "money": "$0.04", 234 | "chinese_name": "梦洁" 235 | }, 236 | { 237 | "id": 40, 238 | "name": "Frank Long", 239 | "money": "$2.79", 240 | "chinese_name": "可馨" 241 | }, 242 | { 243 | "id": 41, 244 | "name": "Diana Porter", 245 | "money": "$5.58", 246 | "chinese_name": "皓睿" 247 | }, 248 | { 249 | "id": 42, 250 | "name": "Ronald Wood", 251 | "money": "$1.77", 252 | "chinese_name": "宸瑜" 253 | }, 254 | { 255 | "id": 43, 256 | "name": "Howard Carter", 257 | "money": "$0.10", 258 | "chinese_name": "晧宇" 259 | }, 260 | { "id": 44, "name": "Mary Ross", "money": "$3.15", "chinese_name": "若瑾" }, 261 | { 262 | "id": 45, 263 | "name": "Brenda Taylor", 264 | "money": "$7.34", 265 | "chinese_name": "若瑾" 266 | }, 267 | { 268 | "id": 46, 269 | "name": "Andrea Banks", 270 | "money": "$4.45", 271 | "chinese_name": "惠茜" 272 | }, 273 | { 274 | "id": 47, 275 | "name": "Irene Baker", 276 | "money": "$5.65", 277 | "chinese_name": "梦洁" 278 | }, 279 | { 280 | "id": 48, 281 | "name": "Carolyn Washington", 282 | "money": "$2.59", 283 | "chinese_name": "秩选" 284 | }, 285 | { 286 | "id": 49, 287 | "name": "Albert Cunningham", 288 | "money": "$7.07", 289 | "chinese_name": "澄泓" 290 | }, 291 | { 292 | "id": 50, 293 | "name": "Diana Reid", 294 | "money": "$6.35", 295 | "chinese_name": "凰羽" 296 | }, 297 | { 298 | "id": 51, 299 | "name": "John Bowman", 300 | "money": "$3.13", 301 | "chinese_name": "唯枫" 302 | }, 303 | { 304 | "id": 52, 305 | "name": "Dorothy Wagner", 306 | "money": "$9.99", 307 | "chinese_name": "亦涵" 308 | }, 309 | { 310 | "id": 53, 311 | "name": "Clarence Kelley", 312 | "money": "$9.58", 313 | "chinese_name": "思宇" 314 | }, 315 | { 316 | "id": 54, 317 | "name": "Rachel Cooper", 318 | "money": "$4.88", 319 | "chinese_name": "思宇" 320 | }, 321 | { 322 | "id": 55, 323 | "name": "Stephen Boyd", 324 | "money": "$5.41", 325 | "chinese_name": "怡香" 326 | }, 327 | { 328 | "id": 56, 329 | "name": "Sandra Wilson", 330 | "money": "$6.37", 331 | "chinese_name": "明美" 332 | }, 333 | { 334 | "id": 57, 335 | "name": "Lisa Mills", 336 | "money": "$3.55", 337 | "chinese_name": "香茹" 338 | }, 339 | { 340 | "id": 58, 341 | "name": "Lois Graham", 342 | "money": "$5.62", 343 | "chinese_name": "娅楠" 344 | }, 345 | { "id": 59, "name": "Robin Fox", "money": "$4.56", "chinese_name": "婧涵" }, 346 | { 347 | "id": 60, 348 | "name": "Eugene White", 349 | "money": "$2.85", 350 | "chinese_name": "云哲" 351 | }, 352 | { 353 | "id": 61, 354 | "name": "Nicholas Robertson", 355 | "money": "$4.85", 356 | "chinese_name": "宸瑜" 357 | }, 358 | { 359 | "id": 62, 360 | "name": "Kathy Simmons", 361 | "money": "$9.76", 362 | "chinese_name": "思宏" 363 | }, 364 | { 365 | "id": 63, 366 | "name": "Sarah Bishop", 367 | "money": "$3.05", 368 | "chinese_name": "琪煜" 369 | }, 370 | { 371 | "id": 64, 372 | "name": "James Sims", 373 | "money": "$4.47", 374 | "chinese_name": "淑颖" 375 | }, 376 | { 377 | "id": 65, 378 | "name": "Marilyn Marshall", 379 | "money": "$1.35", 380 | "chinese_name": "松源" 381 | }, 382 | { 383 | "id": 66, 384 | "name": "Emily Gonzalez", 385 | "money": "$5.24", 386 | "chinese_name": "松源" 387 | }, 388 | { 389 | "id": 67, 390 | "name": "Donna Reynolds", 391 | "money": "$0.25", 392 | "chinese_name": "辰华" 393 | }, 394 | { 395 | "id": 68, 396 | "name": "Steven Turner", 397 | "money": "$5.34", 398 | "chinese_name": "展博" 399 | }, 400 | { 401 | "id": 69, 402 | "name": "Stephanie Campbell", 403 | "money": "$9.27", 404 | "chinese_name": "丰逸" 405 | }, 406 | { 407 | "id": 70, 408 | "name": "Louis Richardson", 409 | "money": "$1.64", 410 | "chinese_name": "漫妮" 411 | }, 412 | { 413 | "id": 71, 414 | "name": "Douglas Austin", 415 | "money": "$4.82", 416 | "chinese_name": "玺越" 417 | }, 418 | { 419 | "id": 72, 420 | "name": "Adam Gonzales", 421 | "money": "$0.04", 422 | "chinese_name": "梓焓" 423 | }, 424 | { 425 | "id": 73, 426 | "name": "Peter Martin", 427 | "money": "$0.87", 428 | "chinese_name": "展博" 429 | }, 430 | { 431 | "id": 74, 432 | "name": "Adam Richards", 433 | "money": "$2.35", 434 | "chinese_name": "雅静" 435 | }, 436 | { 437 | "id": 75, 438 | "name": "Melissa Thompson", 439 | "money": "$1.08", 440 | "chinese_name": "羽彤" 441 | }, 442 | { 443 | "id": 76, 444 | "name": "Edward Carter", 445 | "money": "$8.43", 446 | "chinese_name": "琪煜" 447 | }, 448 | { 449 | "id": 77, 450 | "name": "Bobby Holmes", 451 | "money": "$2.05", 452 | "chinese_name": "军卿" 453 | }, 454 | { 455 | "id": 78, 456 | "name": "Randy Vasquez", 457 | "money": "$0.59", 458 | "chinese_name": "彦歆" 459 | }, 460 | { 461 | "id": 79, 462 | "name": "Thomas Adams", 463 | "money": "$0.50", 464 | "chinese_name": "可馨" 465 | }, 466 | { 467 | "id": 80, 468 | "name": "Eugene Holmes", 469 | "money": "$1.17", 470 | "chinese_name": "美莲" 471 | }, 472 | { 473 | "id": 81, 474 | "name": "Gerald Jenkins", 475 | "money": "$4.47", 476 | "chinese_name": "凰羽" 477 | }, 478 | { 479 | "id": 82, 480 | "name": "Rebecca Stewart", 481 | "money": "$0.39", 482 | "chinese_name": "亦涵" 483 | }, 484 | { 485 | "id": 83, 486 | "name": "Kenneth Lawson", 487 | "money": "$5.29", 488 | "chinese_name": "雅芙" 489 | }, 490 | { 491 | "id": 84, 492 | "name": "Bruce Johnson", 493 | "money": "$1.81", 494 | "chinese_name": "冠泽" 495 | }, 496 | { 497 | "id": 85, 498 | "name": "Timothy Ramirez", 499 | "money": "$9.18", 500 | "chinese_name": "海程" 501 | }, 502 | { 503 | "id": 86, 504 | "name": "Janet Lewis", 505 | "money": "$4.60", 506 | "chinese_name": "泰霖" 507 | }, 508 | { 509 | "id": 87, 510 | "name": "Lisa Powell", 511 | "money": "$8.86", 512 | "chinese_name": "云哲" 513 | }, 514 | { 515 | "id": 88, 516 | "name": "Judy Martinez", 517 | "money": "$8.98", 518 | "chinese_name": "宸赫" 519 | }, 520 | { 521 | "id": 89, 522 | "name": "Kathryn Riley", 523 | "money": "$6.72", 524 | "chinese_name": "烨伟" 525 | }, 526 | { 527 | "id": 90, 528 | "name": "Ryan Kelley", 529 | "money": "$3.22", 530 | "chinese_name": "思宇" 531 | }, 532 | { 533 | "id": 91, 534 | "name": "Andrew Carr", 535 | "money": "$0.97", 536 | "chinese_name": "晓晴" 537 | }, 538 | { 539 | "id": 92, 540 | "name": "Ashley Elliott", 541 | "money": "$0.22", 542 | "chinese_name": "泽瀚" 543 | }, 544 | { 545 | "id": 93, 546 | "name": "Ralph Bradley", 547 | "money": "$6.92", 548 | "chinese_name": "松源" 549 | }, 550 | { 551 | "id": 94, 552 | "name": "Jimmy Rodriguez", 553 | "money": "$6.26", 554 | "chinese_name": "烨伟" 555 | }, 556 | { 557 | "id": 95, 558 | "name": "Kevin Payne", 559 | "money": "$3.49", 560 | "chinese_name": "轩硕" 561 | }, 562 | { 563 | "id": 96, 564 | "name": "Matthew Ramirez", 565 | "money": "$3.05", 566 | "chinese_name": "烨伟" 567 | }, 568 | { 569 | "id": 97, 570 | "name": "Linda Peters", 571 | "money": "$0.74", 572 | "chinese_name": "韵寒" 573 | }, 574 | { 575 | "id": 98, 576 | "name": "Sandra Medina", 577 | "money": "$6.28", 578 | "chinese_name": "晓晴" 579 | }, 580 | { 581 | "id": 99, 582 | "name": "Edward Taylor", 583 | "money": "$7.95", 584 | "chinese_name": "瀚聪" 585 | }, 586 | { 587 | "id": 100, 588 | "name": "John Rodriguez", 589 | "money": "$5.54", 590 | "chinese_name": "志宸" 591 | }, 592 | { "id": 101, "name": "(͡° ͜ʖ ͡°)" }, 593 | { "id": 102, "name": "\u1F60\u1F62" } 594 | ] 595 | } -------------------------------------------------------------------------------- /PhotonJSON.livecodescript: -------------------------------------------------------------------------------- 1 | script "community.ferruslogic.library.photonjson" 2 | /* 3 | Code repository: https://github.com/DTByte-Ltd/PhotonJSON 4 | Web: https://dtbyte.com/ 5 | License: https://opensource.org/licenses/MIT 6 | Date: Nov 2020 7 | Last Update: October 19, 2025 8 | Note: PhotonJSON follows JSON's standards presented 9 | in https://www.json.org/json-en.html 10 | */ 11 | 12 | /** 13 | Type: library 14 | Title: PhotonJSON 15 | Version: 1.2.5 16 | Author: DTByte-Ltd 17 | SVGIcon: M173.17275,101.24755c-0.31882,-0.37688 -0.63584,-0.75556 -0.97189,-1.15557c0.11837,-0.24671 0.14286,-0.33878 0.19637, 18 | -0.40817c0.28617,-0.35193 0.57869,-0.69842 0.87121,-1.04491c2.99006,-3.53791 5.74791,-7.24499 8.1747,-11.19333c2.57237, 19 | -4.18554 4.75153,-8.56019 6.24089,-13.25277c1.54968,-4.88305 2.38824,-9.85227 1.81499,-15.00472c-0.66078,-5.93613 -3.11478, 20 | -10.92848 -7.6264,-14.87682c-2.6218,-2.29436 -5.60233,-3.99052 -8.82414,-5.28578c-4.84677,-1.94787 -9.91577,-2.8862 -15.09995, 21 | -3.18961c-5.81231,-0.34014 -11.60105,-0.00544 -17.35214,0.92246c-1.23902,0.2 -2.47849,0.39547 -3.73973,0.59683c0.02041, 22 | -0.11701 0.01179,-0.18141 0.03855,-0.20318c0.31111,-0.2576 0.62495,-0.51202 0.94287,-0.76146c3.45446,-2.70842 4.85357, 23 | -7.17333 3.55061,-11.33846c-1.71975,-5.49757 -7.44181,-8.53706 -12.98655,-6.90076c-0.11655,0.03447 -0.23084,0.07937 -0.34604, 24 | 0.12517c-0.30114,0.11882 -0.60908,0.24037 -0.97734,0.17823c-0.28118,-0.4127 -0.56055,-0.82223 -0.83992,-1.23221c-2.46125, 25 | -3.6132 -5.24587,-6.94521 -8.56019,-9.81418c-3.00865,-2.60457 -6.31844,-4.71344 -10.08402,-6.05722c-3.84177,-1.37054 -7.76971, 26 | -1.72338 -11.78336,-0.94378c-2.87668,0.55874 -5.55517,1.6431 -8.08627,3.10299c-2.72656,1.57281 -5.17013,3.51478 -7.40825, 27 | 5.72161c-3.57691,3.52748 -6.5003,7.55202 -9.0246,11.87951c-2.72611,4.67443 -4.90981,9.5983 -6.74793,14.6809c-0.19683, 28 | 0.54468 -0.4118,1.08255 -0.62994,1.65353c-0.43991,-0.04172 -0.79683,-0.06032 -1.14877,-0.11202c-2.42044,-0.35601 -4.83407, 29 | -0.7669 -7.26086,-1.06895c-5.14564,-0.63992 -10.30534,-0.72745 -15.47366,-0.25941c-3.44267,0.31157 -6.82321,0.93607 -10.12438, 30 | 1.96102c-4.06309,1.26124 -7.84272,3.08076 -11.15478,5.78964c-5.20868,4.26037 -7.91121,9.80148 -8.36972,16.47412c-0.29887,4.3479 0.30477,8.58967 1.53154, 31 | 12.75798c1.4431,4.90346 3.61592,9.47585 6.24134,13.84416c2.57599,4.28622 5.5529,8.28128 8.78378,12.09266c0.2839,0.33515 0.54831,0.68708 0.88436,1.11022c-0.09161, 32 | 0.01134 -0.16826,0.02676 -0.23311,0.03946c-0.11474,0.02268 -0.19365,0.0381 -0.25805,0.01451c-0.33878,-0.12563 -0.66214,-0.29388 -0.99729,-0.4313c-5.11389, 33 | -2.09617 -10.97383,0.14422 -13.36978,5.11027c-1.85762,3.85039 -1.15239,8.50713 1.75149,11.6532c0.32971,0.35737 0.79593,0.61225 0.94786,1.17054c-0.16236, 34 | 0.34966 -0.34059,0.71429 -0.50295,1.08573c-0.63538,1.45263 -1.31612,2.88802 -1.88982,4.36513c-1.66805,4.29348 -2.78597,8.71484 -2.93972,13.34574c-0.08753, 35 | 2.64085 0.09479,5.25494 0.73244,7.82776c1.34514,5.42773 4.40096,9.68039 8.88582,12.95344c2.77146,2.0227 5.82411,3.49437 9.06814, 36 | 4.57783c3.54063,1.18278 7.18149,1.87576 10.89492,2.24175c3.93928,0.38867 7.88173,0.37098 11.821,0.11746c3.75605,-0.24173 7.4858,-0.74151 11.18335, 37 | -1.46442c0.04308,-0.00816 0.08617,-0.01769 0.12971,-0.02721c0.30522,-0.06576 0.62767,-0.1356 0.95693,0.11882c0.17188,0.46894 0.361,0.97824 0.54558, 38 | 1.48891c1.99186,5.51345 4.39053,10.83641 7.44453,15.84917c2.65536,4.35833 5.73295,8.38196 9.51939,11.83007c2.97419,2.70842 6.2554,4.94156 10.01735, 39 | 6.42729c5.66039,2.2354 11.31261,2.22678 16.9671,-0.02222c2.33064,-0.927 4.49302,-2.15286 6.52616,-3.61365c2.92747,-2.10297 5.48578,-4.59915 7.79012, 40 | -7.36199c3.77193,-4.5225 6.72888,-9.55159 9.22143,-14.86821c1.30886,-2.79232 2.45037,-5.65358 3.50798,-8.54931c0.01179,-0.03175 0.02132,-0.06576 0.03129,-0.10023c0.05079, 41 | -0.17687 0.10476,-0.36644 0.43493,-0.33515c0.03175,0.29615 0.06304,0.60046 0.0966,0.90432c0.67937,6.13658 6.7316,10.39559 12.72668,8.89761c4.09801,-1.02405 6.68353,-3.64041 7.77878, 42 | -7.723c0.11429,-0.4254 0.22359,-0.85216 0.33787,-1.28936c0.43447,-0.03628 0.79185,-0.06894 1.15013,-0.09615c3.75968,-0.28617 7.47764,-0.82223 11.10716, 43 | -1.87667c4.12703,-1.19956 7.99375,-2.93654 11.41646,-5.57739c3.57011,-2.75514 6.21005,-6.19599 7.68898,-10.48493c0.84944,-2.46216 1.25897, 44 | -5.00732 1.35965,-7.60191c0.11701,-3.00911 -0.26032,-5.97195 -0.91566,-8.90351c-1.09661,-4.90437 -3.01319,-9.49172 -5.41004,-13.88906c-2.85446, 45 | -5.23725 -6.32661,-10.04547 -10.17382,-14.59111zM122.998,21.35452c0.04671,0.07302 0.05397,0.17052 0.11066,0.35964c-4.75969,6.68262 -1.12564, 46 | 15.6274 7.33342,16.91313c-0.27574,0.14014 -0.45035,0.27347 -0.64581,0.32245c-10.09491,2.53246 -19.78074,6.20506 -29.25115,10.47994c-0.16417, 47 | 0.07392 -0.33334,0.13696 -0.58277,0.23901c-9.98289,-4.53838 -20.26011,-8.41507 -30.98541,-11.02099c0,-0.08345 -0.00454,-0.1551 -0.00862, 48 | -0.2186c-0.00726,-0.11429 -0.01315,-0.20046 0.01361,-0.27529c2.2286,-6.30121 4.98328,-12.34845 8.71303,-17.91858c2.1515,-3.21364 4.59597, 49 | -6.18103 7.49261,-8.75884c2.11023,-1.87803 4.40413,-3.4853 6.97559,-4.67625c2.88756,-1.33743 5.90211,-2.0227 9.10034,-1.78279c2.05535, 50 | 0.1542 4.01093,0.69615 5.89984,1.49616c2.22678,0.94332 4.25765,2.2159 6.14384,3.72023c3.90708,3.11568 7.02049,6.92571 9.69082,11.12077zM61.12379, 51 | 42.07314c0.3932,0.0576 0.77507,0.19637 1.24582,0.31928c-1.54786,5.33975 -2.78053,10.67133 -3.74834,16.06187c-0.96917, 52 | 5.3978 -1.66397,10.8355 -2.21227,16.30088c-2.93926,2.23676 -5.90075,4.40005 -8.75884,6.69214c-2.86307,2.29617 -5.68079, 53 | 4.65765 -8.4128,7.10802c-2.72883,2.44719 -5.32659,5.03997 -8.02413,7.60916c-0.15374,-0.14377 -0.3288,-0.27891 -0.46894, 54 | -0.444c-4.39189,-5.1656 -8.28264,-10.66679 -11.22462,-16.8002c-1.75195,-3.6522 -3.10888,-7.43864 -3.8005,-11.44322c-0.62359, 55 | -3.61183 -0.68345,-7.21551 0.24445,-10.79106c0.87983,-3.39052 2.67668,-6.22003 5.29439,-8.53661c2.05762,-1.82134 4.39234, 56 | -3.18961 6.91346,-4.26218c3.19142,-1.35784 6.52525,-2.18007 9.94887,-2.66307c5.51072,-0.77733 11.0287,-0.71429 16.54351, 57 | -0.05714c2.15876,0.25715 4.30844,0.59048 6.45994,0.90613zM140.28438,53.13586c-0.81724,-3.56694 -1.70115,-7.11845 -2.57146, 58 | -10.74072c0.30794,-0.09977 0.59502,-0.23266 0.89616,-0.2839c3.08258,-0.522 6.17468,-0.9601 9.29535,-1.20772c2.76148, 59 | -0.21905 5.52297,-0.30159 8.28672,-0.18685c4.91344,0.20408 9.73799,0.92518 14.36797,2.67078c2.77554,1.04627 5.35925, 60 | 2.42951 7.65406,4.32885c3.87397,3.20684 5.91617,7.34793 6.38103,12.32577c0.42132,4.51026 -0.38005,8.84773 -1.78687, 61 | 13.09948c-1.34423,4.06309 -3.24902,7.86495 -5.4758,11.51125c-2.34379,3.83814 -5.01729,7.43592 -7.92708,10.8609c-0.19819, 62 | 0.23311 -0.43039,0.43765 -0.71792,0.72699c-7.67946,-8.04091 -16.17707,-15.01243 -25.0393,-21.34039c-0.49071,-3.79596 -0.93879, 63 | -7.43592 -1.43675,-11.06907c-0.49207,-3.59097 -1.11657,-7.16199 -1.9261,-10.69537zM92.7287,51.91226c0.36962,0.15374 0.72155, 64 | 0.34921 1.15149,0.5601c-0.22721,0.16599 -0.35828,0.29479 -0.51429,0.37189c-10.8219,5.31118 -21.13087,11.51397 -31.29425, 65 | 17.97074c-0.01723,0.01088 -0.04581,0.00363 -0.09705,-0.00952c-0.03311,-0.00816 -0.07528,-0.01905 -0.12971,-0.02903c1.06849, 66 | -9.22007 2.72792,-18.32267 5.40551,-27.29919c0.30885,0.02676 0.57189,0.01633 0.8186,0.07574c6.87673,1.65852 13.5657, 67 | 3.90209 20.13811,6.50303c1.51476,0.59955 3.01772,1.22949 4.5216,1.85626zM110.87042,55.01252c-1.5592,-0.81362 -3.12748, 68 | -1.60954 -4.73793,-2.43676c2.99414,-2.06669 22.2565,-8.65634 26.53365,-9.08945c0.12744,0.35329 0.28526,0.71974 0.39366, 69 | 1.10024c1.50342,5.27217 2.72021,10.61101 3.60957,16.0206c0.46259,2.81364 0.85897,5.63862 1.2685,8.46133c0.00952, 70 | 0.06576 0.01995,0.13197 0.02993,0.19864c0.0771,0.50069 0.15737,1.01997 -0.00136,1.63222c-1.60592,-0.89434 -3.0209, 71 | -1.93517 -4.50844,-2.85672c-1.46306,-0.90659 -2.91205,-1.83585 -4.37919,-2.73518c-1.50569,-0.92246 -3.0209,-1.83086 -4.54291, 72 | -2.72702c-1.48301,-0.87303 -2.97373,-1.73335 -4.47171,-2.58008c-1.53743,-0.86894 -3.08167,-1.7261 -4.63407,-2.56828c-1.51204, 73 | -0.82042 -3.0345,-1.6236 -4.55969,-2.41953zM99.65985,55.33679c0.1229,-0.05215 0.26168,-0.06667 0.46849,-0.11655c13.44098, 74 | 6.39962 26.33773,13.84234 38.6948,22.35673c1.19457,14.9571 1.19457,29.89016 0,44.84952c-12.35434,8.51257 -25.25019, 75 | 15.95529 -38.78051,22.39846c-0.42359,-0.18504 -0.84173,-0.35148 -1.24627,-0.54604c-12.68405,-6.10574 -24.84882,-13.11218 -36.473, 76 | -21.05468c-1.28346,-0.87711 -1.17416,-0.64218 -1.29616,-2.29254c-0.55103,-7.46449 -0.81815,-14.9385 -0.78686,-22.4234c0.02313, 77 | -5.48805 0.26304,-10.96839 0.56554,-16.44691c0.06485,-1.17643 0.19048,-2.35014 0.24626,-3.52703c0.03039,-0.64037 0.25442, 78 | -1.09752 0.8118,-1.45399c1.22178,-0.78187 2.40275,-1.62678 3.61274,-2.42679c10.64049,-7.0341 21.69459,-13.34211 33.19496, 79 | -18.86372c0.32653,-0.15692 0.65488,-0.31111 0.98822,-0.45307zM144.47263,88.38707c-0.0712,-2.21227 -0.22721,-4.42182 -0.35239, 80 | -6.79192c3.62045,1.87531 18.05146,14.4614 21.13177,18.37936c-0.14286,0.47801 -0.56917,0.77098 -0.90387,1.11838c-4.37738, 81 | 4.54019 -9.0636,8.74206 -13.98067,12.68723c-1.73109,1.38913 -3.49982,2.73065 -5.25585,4.08848c-0.24127,0.1864 -0.50704,0.3415 -0.72518, 82 | 0.48708c-0.11565,-0.05805 -0.16281,-0.06939 -0.19002,-0.09887c-0.02857,-0.03175 -0.05669,-0.08163 -0.05442,-0.122c0.60182, 83 | -9.91032 0.64989,-19.82745 0.33062,-29.74775zM35.62461,101.1006c-0.31202,-0.32381 -0.61271,-0.65896 -0.97099,-1.04491c3.05763, 84 | -3.92068 17.40928,-16.44555 21.00071,-18.36122c0.24082,0.1415 0.21225,0.35601 0.18504,0.561c-0.00726,0.05261 -0.01406, 85 | 0.10476 -0.01633,0.15465c-0.09796,2.21635 -0.23719,4.4318 -0.30794,6.64906c-0.0966,3.03224 -0.16826,6.06583 -0.20862, 86 | 9.09943c-0.07166,5.39054 0.07211,10.77836 0.31882,16.16301c0.05986,1.30795 0.15828,2.61454 0.23764,3.90572c-0.40998, 87 | 0.15737 -0.63856,-0.04581 -0.8508,-0.23402c-0.05034,-0.0449 -0.10023,-0.08934 -0.15102,-0.12744c-3.66263,-2.7438 -7.2273, 88 | -5.60868 -10.6677,-8.62686c-2.96375,-2.60003 -5.83136,-5.30074 -8.56881,-8.13842zM167.75183,104.72196c0.29025, 89 | -0.2839 0.54558,-0.60273 0.89706,-0.99502c0.283,0.26531 0.42495,0.37461 0.53969,0.50794c4.21728,4.94881 7.96835, 90 | 10.21509 10.87677,16.05008c1.84673,3.70481 3.29891,7.55111 4.07669,11.63007c0.70296,3.68667 0.83538,7.37016 -0.05079, 91 | 11.05546c-0.86668,3.60231 -2.73019,6.58149 -5.51118,9.0051c-2.49436,2.17418 -5.3656,3.69392 -8.45861,4.80686c-3.47124, 92 | 1.24899 -7.06176,1.97145 -10.73482,2.27304c-0.27937,0.02313 -0.55874,0.05578 -0.83992,0.08889c-0.75375,0.08798 -1.51657, 93 | 0.17778 -2.31613,0.08254c-0.1737,-0.31202 -0.35057,-0.62087 -0.51928,-0.93471c-3.47306,-6.46221 -12.03688,-7.53887 -17.01472, 94 | -2.14016c-0.22721,0.24626 -0.46849,0.47937 -0.77915,0.67484c2.86217,-10.35069 4.60459,-20.87191 5.63907, 95 | -31.6158c0.39139,-0.29706 0.81362,-0.63039 1.24899,-0.94514c5.95653,-4.30255 11.70581,-8.86315 17.09499, 96 | -13.86275c1.99231,-1.84855 3.90708,-3.78054 5.85132,-5.68125zM19.75594,120.58746c0.15692,-0.32019 0.34921, 97 | -0.62314 0.54695,-0.9728c4.13746,0.53787 7.68717,-0.56463 10.29037,-3.90163c2.60321,-3.33609 2.78371, 98 | -7.04816 1.2685,-10.89129c0.28254,-0.19139 0.41497,-0.04082 0.52926,0.08844c0.02086,0.02404 0.04172,0.04762 0.06259, 99 | 0.06803c1.20001,1.17235 2.37327,2.37146 3.58598,3.5302c5.87717,5.61594 12.17838,10.72076 18.7585,15.48635c0.44082, 100 | 0.31928 0.87938,0.64037 1.31657,0.96373c0.07166,0.05352 0.13107,0.12381 0.28345,0.26939c0.5601,5.4046 1.24355, 101 | 10.88766 2.2227,16.32809c0.96963,5.38737 2.20456,10.71578 3.7302,15.99611c-0.81679,0.45035 -1.65444,0.45352 -2.44266, 102 | 0.58368c-5.42365,0.89616 -10.88176,1.39548 -16.38342,1.14332c-5.09802,-0.23356 -10.09445,-1.02677 -14.86004,-2.95423c-2.10932, 103 | -0.85307 -4.09892,-1.92293 -5.93613,-3.27396c-4.82682,-3.54925 -7.19328,-8.37198 -7.44091,-14.30267c-0.16463, 104 | -3.94699 0.54468,-7.76064 1.74469,-11.4981c0.73561,-2.29028 1.66623,-4.503 2.72339,-6.66267zM93.86341,147.43948c-3.37374, 105 | 2.1837 -22.22702,8.62323 -26.45837,9.06723c-1.58142,-2.94879 -5.62546,-23.18486 -5.45086,-27.37675c1.16328,0.47075 2.08529, 106 | 1.27802 3.11206,1.90388c1.04355,0.63584 2.0617,1.31385 3.09664,1.96465c1.03493,0.65035 2.07349,1.29525 3.11659, 107 | 1.93245c1.0431,0.6372 2.09073,1.26714 3.14199,1.89118c1.09026,0.64672 2.18415,1.28754 3.28167,1.92157c1.05852, 108 | 0.61135 2.12111,1.21543 3.18689,1.81408c1.06532,0.59819 2.13427,1.19185 3.20729,1.77689c1.07303,0.58504 2.15014, 109 | 1.16283 3.23133,1.7329c1.08119,0.57007 2.16919,1.12745 3.25537,1.68755c1.07575,0.55466 2.15331,1.10614 3.2794, 110 | 1.68437zM137.87754,129.20843c0.03311,0.00952 0.07574,0.02132 0.13107,0.03311c0.08118,4.49302 -3.71342, 111 | 23.61888 -5.39689,27.25566c-3.69755,-0.24173 -23.08871,-6.84679 -26.36993,-8.98197c0.01587,-0.03674 0.02676, 112 | -0.07664 0.04853,-0.1093c0.02449,-0.03674 0.05442,-0.07302 0.0898,-0.09887c0.07302,-0.05306 0.14739, 113 | -0.10658 0.22812,-0.14649c7.26358,-3.60866 14.36162,-7.51936 21.28053,-11.7498c3.32204,-2.03086 6.59418, 114 | -4.14291 9.89128,-6.21459c0.01678,-0.01043 0.04535,-0.00227 0.09751,0.01225zM100.01632,150.33294c10.00239, 115 | 4.55697 20.24832,8.39965 31.05706,11.04911c-0.09796,0.40545 -0.13016,0.62631 -0.20454,0.8313c-2.06216, 116 | 5.72887 -4.55198,11.2541 -7.83547,16.39929c-1.98188,3.1048 -4.21592,6.0105 -6.84407,8.60056c-2.01046, 117 | 1.98143 -4.20141,3.73066 -6.67174,5.11253c-2.02996,1.13561 -4.16241,1.9905 -6.4613,2.4159c-3.06126, 118 | 0.56599 -6.0418,0.27755 -8.96609,-0.75647c-2.63405,-0.93153 -5.00505,-2.32973 -7.19918,-4.04086c-3.06217, 119 | -2.38824 -5.64043,-5.2377 -7.9239,-8.36427c-3.36058,-4.60187 -5.96288,-9.62052 -8.13026,-14.87365c-0.62132, 120 | -1.50659 -1.17235,-3.04267 -1.74877,-4.56786c-0.07619,-0.20136 -0.11111,-0.41815 -0.18594,-0.71021c2.19776, 121 | -0.61044 4.33202,-1.17326 6.44815,-1.79911c2.08438,-0.61633 4.1615,-1.2626 6.22094,-1.95739c2.10207, 122 | -0.70931 4.19053,-1.46487 6.26447,-2.25354c2.03177,-0.77234 4.04812,-1.58959 6.05359,-2.4286c2.04492, 123 | -0.85534 4.06898,-1.76193 6.12706,-2.65672z 124 | OS: mac, windows, linux, ios, android 125 | Platforms: desktop, mobile, web 126 | Description: 127 | LiveCode script library for working with JSON, written in livecode-script and without the use of external. 128 | */ 129 | 130 | on extensionInitialize 131 | if the target is not me then 132 | pass extensionInitialize 133 | end if 134 | 135 | if the environment contains "development" then 136 | set the _ideOverride of me to true 137 | end if 138 | 139 | insert the script of me into back 140 | end extensionInitialize 141 | 142 | 143 | on extensionFinalize 144 | if the target is not me then pass extensionFinalize 145 | remove the script of me from back 146 | end extensionFinalize 147 | 148 | 149 | /* Declare script local variables */ 150 | local sIndentSize, sMaxLength 151 | 152 | /* This flag is used to determine if the function is being called by itself. 153 | So you don't have to repeat some operations and only do them when you finish 154 | building the JSON. */ 155 | local sRecursionCounter = 0 156 | 157 | 158 | /* These are the four functions that are optionally included for PhotonJSON 159 | compatibility with projects that use mergeJSON or FastJSON. 160 | They expect the same parameters as in their original versions 161 | and in the same order. 162 | 163 | Warning! These functions will override original ones, if you don't want 164 | this behavior then comment out these four functions */ 165 | 166 | 167 | /** 168 | Summary: Format a LC array into UTF-8 encoded json data. 169 | 170 | Parameters: 171 | pArray (Array): The array to be formatted 172 | pForceRootType (String): The type to force values to. 173 | pPretty (Boolean): Set to true to format the resulting JSON data nicely. 174 | 175 | Returns (String): JSON data. 176 | 177 | Synonyms: JSONStringify 178 | 179 | Description: 180 | Format a LC array into UTF-8 encoded json data. 181 | */ 182 | function ArrayToJSON pArray, pForceRootType, pPretty 183 | return JSONStringify(pArray, pForceRootType, pPretty) 184 | end ArrayToJSON 185 | 186 | 187 | /** 188 | Summary: Parse JSON text into a LiveCode array. 189 | 190 | Parameters: 191 | pJsonString (string): String containing UTF-8 encoded JSON text 192 | 193 | Returns: A LiveCode array (Array). 194 | 195 | Synonyms: JSONParser, arrayFromJson 196 | 197 | Description: 198 | is used to convert data encoded in JSON format into a LiveCode 199 | array. It parses and returns resulting array. 200 | */ 201 | function JSONToArray pJsonString 202 | return JSONParser(pJsonString) 203 | end JSONToArray 204 | 205 | 206 | /** 207 | Summary: Parse JSON text into a LiveCode array. 208 | 209 | Parameters: 210 | pJsonString (string): String containing UTF-8 encoded JSON text 211 | 212 | Returns: A LiveCode array (Array). 213 | 214 | Synonyms: JSONParser, JSONToArray 215 | 216 | Description: 217 | is used to convert data encoded in JSON format into a LiveCode 218 | array. It parses and returns resulting array. 219 | */ 220 | function arrayFromJson pJsonString 221 | return JSONParser(pJsonString) 222 | end arrayFromJson 223 | 224 | 225 | /** 226 | Summary: Format a LC array into UTF-8 encoded json data. 227 | 228 | Parameters: 229 | pArray (Array): The array to be formatted 230 | 231 | Returns (String): JSON data. 232 | 233 | Description: 234 | Format a LC array into UTF-8 encoded json data. 235 | */ 236 | function jsonFromArray pArray 237 | return JSONStringify(pArray) 238 | end jsonFromArray 239 | 240 | 241 | /* CORE DECLARATIONS */ 242 | 243 | 244 | /** 245 | Summary: Validate if a string is a valid JSON. 246 | 247 | Parameters: 248 | pJsonString (String): The UTF-8 encoded JSON data to be verified. 249 | 250 | Returns (Boolean): A Boolean. 251 | 252 | Description: 253 | Validate if a string is a valid JSON. 254 | */ 255 | function validateJSON pJsonString 256 | local tCont = 0, tTokenCont = 0, tSplit 257 | 258 | if _validateJSON(pJsonString) is false then 259 | return false 260 | end if 261 | 262 | /* escaped quotes <" > and reverse-solidus < \\ > will confuse the tokenizer 263 | so we replace them with "\u0022" and "\u005C" which we'll unescape 264 | with all the other unescapes when we parse */ 265 | 266 | if "\\" is in pJsonString then 267 | replace " " with " " in pJsonString 268 | end if 269 | 270 | if (backSlash & quote) is in pJsonString then 271 | replace (backSlash & quote) with "\u0022" in pJsonString 272 | end if 273 | 274 | if "\/" is in pJsonString then 275 | replace "\/" with "/" in pJsonString 276 | end if 277 | 278 | put _cleaningNonPrintableChars(pJsonString) into pJsonString 279 | 280 | repeat for each token tToken in pJsonString 281 | add 1 to tTokenCont 282 | 283 | switch tToken 284 | case "{"; case "[" 285 | add 1 to tCont 286 | break 287 | 288 | case "}"; case "]" 289 | subtract 1 from tCont 290 | break 291 | 292 | case "+" 293 | put the token (tTokenCont - 1) to (tTokenCont + 1) of pJsonString \ 294 | into tSplit 295 | 296 | split tSplit by quote 297 | 298 | if tSplit[2] is not "+" then 299 | return false 300 | end if 301 | break 302 | 303 | end switch 304 | 305 | if tToken begins with "0" and tToken is not 0 then 306 | put the token (tTokenCont - 1) to (tTokenCont + 1) of pJsonString \ 307 | into tSplit 308 | 309 | split tSplit by quote 310 | 311 | if tSplit[2] is not tToken then 312 | return false 313 | end if 314 | end if 315 | end repeat 316 | 317 | return (tCont is 0) 318 | end validateJSON 319 | 320 | 321 | /** 322 | Summary: JSON string formatted in a more visually pleasing way. 323 | 324 | Parameters: 325 | pJsonString (String): The UTF-8 encoded JSON data to be beautify. 326 | 327 | Returns (String): UTF-8 JSON string. 328 | 329 | Description: 330 | JSON string formatted in a more visually pleasing way. 331 | */ 332 | function beautifyJSON pJsonString, pIndentSize 333 | if pIndentSize is an integer then 334 | put pIndentSize into sIndentSize 335 | else 336 | put 2 into sIndentSize 337 | end if 338 | 339 | replace tab with empty in pJsonString 340 | replace CR with empty in pJsonString 341 | put _cleaningNonPrintableChars(pJsonString) into pJsonString 342 | 343 | return _jsonPrettyCompact(pJsonString, pIndentSize) 344 | end beautifyJSON 345 | 346 | 347 | /** 348 | Summary: Remove unnecessary spaces from JSON string. 349 | 350 | Parameters: 351 | pJsonString (String): The UTF-8 encoded JSON data to be minified. 352 | 353 | Returns (String): Minified JSON data. 354 | 355 | Description: 356 | Remove unnecessary characters from JSON data. 357 | */ 358 | function minifyJSON pJsonString 359 | local tFormatted, tPrevToken = "", tIndex = 0, tOpenClose = "" 360 | local tItems = "", tHyphenMinus = false 361 | 362 | if _validateJSON(pJsonString) is false then return pJsonString 363 | replace tab with empty in pJsonString 364 | replace CR with empty in pJsonString 365 | 366 | # escaped quotes < " > and reverse-solidus < \\ > will confuse the tokenizer 367 | # so we replace them with "\u0022" and "\u005C" which we'll unescape 368 | # with all the other unescapes when we parse 369 | if "\\" is in pJsonString then replace " " with " " in pJsonString 370 | if (backSlash & quote) is in pJsonString then replace (backSlash & quote) with "\u0022" in pJsonString 371 | if "\/" is in pJsonString then replace "\/" with "/" in pJsonString 372 | put _cleaningNonPrintableChars(pJsonString) into pJsonString 373 | 374 | repeat for each token tToken in pJsonString 375 | 376 | switch tToken 377 | 378 | case "{"; case "["; case "}"; case "]"; case ":"; case comma 379 | put tToken after tFormatted 380 | break 381 | 382 | case "-" 383 | put true into tHyphenMinus 384 | next repeat 385 | break 386 | 387 | default 388 | if tHyphenMinus then 389 | put "-" & tToken into tToken 390 | put false into tHyphenMinus 391 | end if 392 | 393 | replace "\u005C" with "\" in tToken 394 | replace "\u0022" with quote in tToken 395 | 396 | put _jsonString(tToken) after tFormatted 397 | end switch 398 | 399 | put tToken into tPrevToken 400 | end repeat 401 | 402 | put textDecode(tFormatted, "UTF8") into tFormatted 403 | 404 | return tFormatted 405 | end minifyJSON 406 | 407 | 408 | 409 | /** 410 | Summary: Format a LC array into UTF-8 encoded json data. 411 | 412 | Parameters: 413 | pArray (Array): The array to be formatted 414 | pForceRootType (String): The type to force values to. 415 | pPretty (Boolean): Set to true to format the resulting JSON data nicely. 416 | 417 | Returns (String): JSON data. 418 | 419 | Description: 420 | Format a LC array into UTF-8 encoded json data. 421 | */ 422 | function JSONStringify pArray, pForceRootType, pPretty 423 | local tJsonString = "[", tIsNumeric = true, tKeys = "", tEndChar = "]" 424 | 425 | add 1 to sRecursionCounter 426 | 427 | if pArray is not an array then return "{}" 428 | 429 | # The array's keys are all *numerical*, so the root element will be a JSON *array* 430 | if the extents of pArray is not a point then 431 | put false into tIsNumeric 432 | put "{" into tJsonString 433 | put "}" into tEndChar 434 | end if 435 | 436 | set the caseSensitive to true 437 | 438 | local tOptions 439 | put pForceRootType into tOptions["string"] 440 | put pPretty into tOptions["pretty"] 441 | # The values of the JSON keys will be formatted to their type. 442 | _builderJSON pArray, tIsNumeric, tOptions, tJsonString 443 | 444 | put tEndChar into the char - 1 of tJsonString 445 | 446 | # Empty array and empty objects 447 | if tJsonString is "[null]" then 448 | put "[]" into tJsonString 449 | else if tJsonString is "{" & quote & quote & ": null}" then 450 | put "{}" into tJsonString 451 | end if 452 | 453 | subtract 1 from sRecursionCounter 454 | 455 | if sRecursionCounter is 0 then 456 | set the caseSensitive to false 457 | if numToChar(8) is in tJsonString then replace numToChar(8) with "\b" in tJsonString 458 | if numToChar(9) is in tJsonString then replace numToChar(9) with "\t" in tJsonString 459 | if numToChar(10) is in tJsonString then replace numToChar(10) with "\n" in tJsonString 460 | if numToChar(12) is in tJsonString then replace numToChar(12) with "\f" in tJsonString 461 | if numToChar(13) is in tJsonString then replace numToChar(13) with "\r" in tJsonString 462 | // non-printable characters to your unicode code (HEX) 463 | put _cleaningNonPrintableChars(tJsonString) into tJsonString 464 | 465 | # Pretty 466 | if pPretty then return _jsonPrettyCompact(tJsonString, 2, pForceRootType) 467 | end if 468 | 469 | return tJsonString 470 | end JSONStringify 471 | 472 | 473 | /** 474 | Summary: Parse JSON text into a LiveCode array. 475 | 476 | Parameters: 477 | pJsonString (string): String containing UTF-8 encoded JSON text 478 | 479 | Returns: A LiveCode array (Array). 480 | 481 | Synonyms: JSONToArray, arrayFromJson 482 | 483 | Description: 484 | is used to convert data encoded in JSON format into a LiveCode 485 | array. It parses and returns resulting array. 486 | */ 487 | function JSONParser pJsonString 488 | local tKeyNameOrValue = 0, tArrayKeysPath, tNumKeys = 0, tOpenJArray, tResultArray, tHyphenMinus, tToken, tOldToken, tObjEmpty 489 | 490 | if pJsonString is empty then return empty 491 | replace tab with empty in pJsonString 492 | replace cr with empty in pJsonString 493 | 494 | # escaped quotes < " > and reverse-solidus < \\ > will confuse the tokenizer 495 | # so we replace them with "\u0022" and "\u005C" which we'll unescape 496 | # with all the other unescapes when we parse 497 | replace "\\" with " " in pJsonString 498 | replace (backSlash & quote) with "\u0022" in pJsonString 499 | replace numToChar(0) with "\u0000" in pJsonString 500 | 501 | if the number of tokens of pJsonString is 2 then 502 | if token 1 of pJsonString is "[" and the token 2 of pJsonString is "]" then 503 | put empty into tResultArray[1] 504 | return tResultArray 505 | else if token 1 of pJsonString is "{" and the token 2 of pJsonString is "}" then 506 | put empty into tResultArray[empty] 507 | return tResultArray 508 | end if 509 | return empty 510 | end if 511 | 512 | repeat for each token tToken in pJsonString 513 | if tNumKeys < 0 then put 0 into tNumKeys 514 | 515 | switch tToken 516 | case "{" 517 | put 0 into tKeyNameOrValue 518 | put tToken into tOldToken 519 | next repeat 520 | 521 | case "[" 522 | add 1 to tNumKeys 523 | put 1 into tKeyNameOrValue 524 | put 1 into tArrayKeysPath[tNumKeys] 525 | put tNumKeys into tOpenJArray[tNumKeys] 526 | put tToken into tOldToken 527 | next repeat 528 | 529 | case "}" 530 | # Fix bug when JSON has empty objects 531 | if tOldToken is "{" then 532 | put empty into tObjEmpty[empty] 533 | _builderArray tObjEmpty, tArrayKeysPath, tResultArray, tNumKeys 534 | put tToken into tOldToken 535 | next repeat 536 | end if 537 | 538 | delete variable tArrayKeysPath[tNumKeys] 539 | subtract 1 from tNumKeys 540 | put tToken into tOldToken 541 | next repeat 542 | 543 | case comma 544 | if tOpenJArray[tNumKeys] <> empty then 545 | if tArrayKeysPath[tNumKeys] is an integer then 546 | add 1 to tArrayKeysPath[tNumKeys] 547 | put 1 into tKeyNameOrValue 548 | end if 549 | else 550 | delete variable tArrayKeysPath[tNumKeys] 551 | subtract 1 from tNumKeys 552 | put 0 into tKeyNameOrValue 553 | end if 554 | 555 | put tToken into tOldToken 556 | next repeat 557 | 558 | case colon 559 | put 1 into tKeyNameOrValue 560 | put tToken into tOldToken 561 | next repeat 562 | 563 | case "]" 564 | delete variable tArrayKeysPath[tNumKeys] 565 | delete variable tOpenJArray[tNumKeys] 566 | subtract 1 from tNumKeys 567 | put 0 into tKeyNameOrValue 568 | 569 | # Fix bug when JSON has empty array 570 | if tOldToken is "[" then 571 | put empty into tObjEmpty[1] 572 | _builderArray tObjEmpty, tArrayKeysPath, tResultArray, tNumKeys 573 | put tToken into tOldToken 574 | end if 575 | 576 | put tToken into tOldToken 577 | next repeat 578 | 579 | case "-" 580 | put true into tHyphenMinus 581 | put tToken into tOldToken 582 | next repeat 583 | end switch 584 | 585 | if backslash is in tToken then 586 | if "\n" is in tToken then replace "\n" with numToChar(10) in tToken 587 | if "\r" is in tToken then replace "\r" with numToChar(13) in tToken 588 | if "\t" is in tToken then replace "\t" with numToChar(9) in tToken 589 | if "\/" is in tToken then replace "\/" with "/" in tToken 590 | if "\f" is in tToken then replace "\f" with numToChar(12) in tToken 591 | if "\b" is in tToken then replace "\b" with numToChar(8) in tToken 592 | if "\u0022" is in tToken then replace "\u0022" with quote in tToken 593 | if "\u005C" is in tToken then replace "\u005C" with "\" in tToken 594 | if "\u" is in tToken then put _resetNonPrintableChars(tToken) into tToken 595 | if "\u" is in tToken then put _unicodeEscapes(tToken) into tToken 596 | end if 597 | 598 | if tOldToken is not in "{[,:-" then 599 | # JSON string format error 600 | return empty 601 | end if 602 | 603 | put textDecode(tToken, "UTF-8") into tToken 604 | put empty into tOldToken 605 | 606 | if tKeyNameOrValue = 1 then 607 | if tHyphenMinus then 608 | put "-" & tToken into tToken 609 | put false into tHyphenMinus 610 | end if 611 | 612 | _builderArray tToken, tArrayKeysPath, tResultArray, tNumKeys 613 | else if tKeyNameOrValue = 0 then 614 | add 1 to tNumKeys 615 | put tToken into tArrayKeysPath[tNumKeys] 616 | end if 617 | end repeat 618 | 619 | if tOldToken is in "{[,:-" then 620 | # JSON string format error 621 | return empty 622 | end if 623 | 624 | return tResultArray 625 | end JSONParser 626 | 627 | private command _builderJSON pArray, pIsNumeric, pOptions, @xJsonString 628 | local tString, tPretty 629 | if pOptions["string"] is "string" then 630 | put "string" into tString 631 | else 632 | put "" into tString 633 | end if 634 | 635 | put pOptions["pretty"] is true into tPretty 636 | 637 | local tValue 638 | if pIsNumeric then 639 | repeat for each element e in pArray 640 | if e is an array then 641 | put JSONStringify(e, tString, tPretty) & comma after xJsonString 642 | else 643 | put _jsonValue(e) into tValue 644 | if tString is "string" then 645 | put quote & tValue & quote into tValue 646 | end if 647 | put tValue & comma after xJsonString 648 | end if 649 | end repeat 650 | else 651 | repeat for each key k in pArray 652 | if pArray[k] is an array then 653 | put _jsonString(k) & ": " &JSONStringify(pArray[k], tString, tPretty) & comma after xJsonString 654 | else 655 | put _jsonValue(pArray[k]) into tValue 656 | if tString is "string" then 657 | put quote & tValue & quote into tValue 658 | end if 659 | put _jsonString(k) & ": " & tValue & comma after xJsonString 660 | end if 661 | end repeat 662 | end if 663 | end _builderJSON 664 | 665 | private function _jsonString pValue 666 | if pValue is not an ascii string then put textEncode(pValue, "UTF-8") into pValue 667 | 668 | # So these characters escape in case they are there. 669 | # https://www.json.org/img/string.png 670 | # any other value is processed as a string. 671 | # JSON strings require that certain characters be 'escaped' with a backslash: 672 | # This makes the processing a bit slower. But it is necessary for it to comply with the ECMA-404 standard 673 | if "\" is in pValue then replace " " with " " in pValue 674 | if quote is in pValue then replace quote with "\" & quote in pValue 675 | return quote & pValue & quote 676 | end _jsonString 677 | 678 | 679 | private function _jsonValue pValue, pNoReplace 680 | switch pValue 681 | case "true" 682 | return "true" 683 | break 684 | 685 | case "false" 686 | return "false" 687 | break 688 | 689 | case ""; case "null"; case null 690 | return "null" 691 | break 692 | 693 | default 694 | if pValue is a number then 695 | if not(char 1 of pValue is 0 and char 2 of pValue is not "." and the length of pValue is not 1 or char 1 of pValue is not in "-0123456789") then 696 | return pValue 697 | end if 698 | end if 699 | 700 | if pNoReplace is no true then 701 | return _jsonString(pValue) 702 | else 703 | return quote & pValue & quote 704 | end if 705 | end switch 706 | end _jsonValue 707 | 708 | 709 | private command _builderArray @pValue, @pListKeys, @pArray, @pNumKeys 710 | local tArray 711 | 712 | # Adding caseSensitive when creating key names, to avoid overwriting keys such as the following: 713 | # A100 = "50", a100 = 33 714 | set the caseSensitive to true 715 | 716 | switch pNumKeys 717 | case 0 718 | -- break 719 | case 1 720 | put pValue into pArray[pListKeys[1]] 721 | break 722 | case 2 723 | put pValue into pArray[pListKeys[1]][pListKeys[2]] 724 | break 725 | case 3 726 | put pValue into pArray[pListKeys[1]][pListKeys[2]][pListKeys[3]] 727 | break 728 | case 4 729 | put pValue into pArray[pListKeys[1]][pListKeys[2]][pListKeys[3]][pListKeys[4]] 730 | break 731 | case 5 732 | put pValue into pArray[pListKeys[1]][pListKeys[2]][pListKeys[3]][pListKeys[4]][pListKeys[5]] 733 | break 734 | case 6 735 | put pValue into pArray[pListKeys[1]][pListKeys[2]][pListKeys[3]][pListKeys[4]][pListKeys[5]][pListKeys[6]] 736 | break 737 | case 7 738 | put pValue into pArray[pListKeys[1]][pListKeys[2]][pListKeys[3]][pListKeys[4]][pListKeys[5]][pListKeys[6]][pListKeys[7]] 739 | break 740 | case 8 741 | put pValue into pArray[pListKeys[1]][pListKeys[2]][pListKeys[3]][pListKeys[4]][pListKeys[5]][pListKeys[6]][pListKeys[7]][pListKeys[8]] 742 | break 743 | case 9 744 | put pValue into pArray[pListKeys[1]][pListKeys[2]][pListKeys[3]][pListKeys[4]][pListKeys[5]][pListKeys[6]][pListKeys[7]][pListKeys[8]][pListKeys[9]] 745 | break 746 | case 10 747 | put pValue into pArray[pListKeys[1]][pListKeys[2]][pListKeys[3]][pListKeys[4]][pListKeys[5]][pListKeys[6]][pListKeys[7]][pListKeys[8]][pListKeys[9]][pListKeys[10]] 748 | break 749 | default 750 | repeat with x = 1 to pNumKeys 751 | put empty into tArray 752 | put pValue into tArray[pListKeys[x]] 753 | put tArray into pValue 754 | end repeat 755 | 756 | union pArray with tArray recursively 757 | break 758 | end switch 759 | 760 | set the caseSensitive to false 761 | end _builderArray 762 | 763 | 764 | private function _unicodeEscapes pString 765 | local tInEsc, tCount, tBuffer, tInEscape, tNString 766 | 767 | put false into tInEsc 768 | repeat for each char c in pString 769 | add 1 to tCount 770 | put c after tBuffer 771 | if tCount < 2 then next repeat 772 | if tBuffer is "\u" then put true into tInEsc 773 | if tInEsc then 774 | if length(tBuffer) < 6 then 775 | next repeat 776 | else 777 | -- TO DEAL WITH DIACRITICS : 778 | if platform() is "MacOS" then 779 | put isotomac(numToChar(baseconvert(char 3 to 6 of tBuffer, 16, 10))) into tBuffer 780 | else 781 | put numToChar(baseconvert(char 3 to 6 of tBuffer, 16, 10)) into tBuffer 782 | end if 783 | put false into tInEsc 784 | end if 785 | else 786 | put char 1 of tBuffer after tNString 787 | delete char 1 of tBuffer 788 | end if 789 | end repeat 790 | 791 | put tBuffer after tNString 792 | 793 | return tNString 794 | end _unicodeEscapes 795 | 796 | 797 | # json beautiful and compact 798 | private function _jsonPrettyCompact pJsonString, pIndentSize, pForceRootType 799 | local tFormatted, tIndent, kSpace, tPrevToken = "", tIndex = 0, tOpenClose = "", tItems = "", tHyphenMinus = false 800 | 801 | if sMaxLength is not an integer then put 50 into sMaxLength 802 | if pIndentSize is not a integer or pIndentSize > 10 then put 4 into pIndentSize 803 | 804 | repeat for pIndentSize 805 | put space after kSpace 806 | end repeat 807 | 808 | # escaped quotes < " > and reverse-solidus < \\ > will confuse the tokenizer 809 | # so we replace them with "\u0022" and "\u005C" which we'll unescape 810 | # with all the other unescapes when we parse 811 | if "\\" is in pJsonString then replace " " with " " in pJsonString 812 | if backSlash & quote is in pJsonString then replace backSlash & quote with "\u0022" in pJsonString 813 | 814 | // In this loop we only get where each JSON object and JSON array begins and ends. 815 | // For now to measure the size of these to know from where to where is each. 816 | repeat for each token tToken in pJsonString 817 | add 1 to tIndex 818 | if tToken is in "[{" then 819 | put comma & tIndex after tItems 820 | else if tToken is in "]}" then 821 | put tIndex into tOpenClose[the item - 1 of tItems] 822 | delete the item - 1 of tItems 823 | end if 824 | end repeat 825 | 826 | put 0 into tIndex 827 | put empty into tItems 828 | 829 | repeat for each token tToken in pJsonString 830 | add 1 to tIndex 831 | 832 | switch tToken 833 | case "{"; case "[" 834 | put kSpace after tIndent 835 | if the length of (the token tIndex to tOpenClose[tIndex] of pJsonString) > sMaxLength then 836 | put tToken & cr & tIndent after tFormatted 837 | put comma & true after tItems 838 | else 839 | put tToken after tFormatted 840 | put comma & false after tItems 841 | end if 842 | break 843 | 844 | case "}"; case "]" 845 | delete char - pIndentSize to - 1 of tIndent 846 | if the last item of tItems is true then 847 | put cr & tIndent & tToken after tFormatted 848 | else 849 | put tToken after tFormatted 850 | end if 851 | delete last item of tItems 852 | break 853 | 854 | case ":" 855 | put ": " after tFormatted 856 | break 857 | 858 | case comma 859 | if the last item of tItems is true then 860 | put comma & cr & tIndent after tFormatted 861 | else 862 | put comma & space after tFormatted 863 | end if 864 | break 865 | 866 | case "-" 867 | put true into tHyphenMinus 868 | next repeat 869 | break 870 | 871 | default 872 | if tHyphenMinus then 873 | put "-" & tToken into tToken 874 | put false into tHyphenMinus 875 | end if 876 | 877 | if "\u00" is in tToken then 878 | replace "\u005C" with "\\" in tToken 879 | replace "\u0022" with "\" & quote in tToken 880 | end if 881 | 882 | if pForceRootType is "string" then 883 | put quote & tToken & quote after tFormatted 884 | else 885 | put _jsonValue(tToken, true) after tFormatted 886 | end if 887 | end switch 888 | 889 | put tToken into tPrevToken 890 | end repeat 891 | 892 | return textDecode(tFormatted, "UTF8") 893 | end _jsonPrettyCompact 894 | 895 | 896 | private function _validateJSON pJsonString 897 | return (the token 1 of pJsonString is "{" and the token - 1 of pJsonString is "}") or (the token 1 of pJsonString is "[" or the token - 1 of pJsonString is "]") 898 | end _validateJSON 899 | 900 | 901 | private function _filterHandlerList pList 902 | filter lines of pList without regex pattern "^P.*" 903 | return pList 904 | end _filterHandlerList 905 | 906 | 907 | // non-printable characters to your unicode code (HEX) 908 | constant kNonPrintableChars = "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,8216,8217,8220,8221,8212,8213,8230" 909 | private function _cleaningNonPrintableChars pText 910 | set the formSensitive to false 911 | 912 | repeat for each item i in kNonPrintableChars 913 | if numToChar(i) is in pText then 914 | replace numToChar(i) with _convertAsciiToUnicodeNum(i) in pText 915 | end if 916 | end repeat 917 | 918 | return pText 919 | end _cleaningNonPrintableChars 920 | 921 | 922 | private function _resetNonPrintableChars pText 923 | local tUnicode 924 | set the formSensitive to false 925 | 926 | repeat for each item i in kNonPrintableChars 927 | put _convertAsciiToUnicodeNum(i) into tUnicode 928 | if tUnicode is in pText then 929 | replace tUnicode with numToChar(i) in pText 930 | end if 931 | end repeat 932 | 933 | return pText 934 | end _resetNonPrintableChars 935 | 936 | 937 | private function _convertAsciiToUnicodeNum pNum 938 | put baseConvert(pNum, 10, 16) into pNum 939 | switch the length of pNum 940 | case 1 941 | return "\u000" & pNum 942 | break 943 | case 2 944 | return "\u00" & pNum 945 | break 946 | case 3 947 | return "\u0" & pNum 948 | break 949 | case 4 950 | return "\u" & pNum 951 | break 952 | end switch 953 | end _convertAsciiToUnicodeNum 954 | -------------------------------------------------------------------------------- /testing/SpeedTest/JSONs/big_test.json: -------------------------------------------------------------------------------- 1 | { "snapshots": { "u1456034794995 1": { "comment": "this is a conditional breakpoint", "globals": null, "execution_linenumber": 17, "handler locals": { "abc": "[empty]", "tLoopIndex": 1, "def": "[empty]" }, "global properties": { "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "brushpattern": 136, "linkhilitecolor": "255,0,0", "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "preservevariables": false, "accentcolor": "0,0,128", "qtidlerate": 50, "movespeed": 200, "emacskeybindings": false, "extendkey": 5, "recordcompression": "raw ", "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\/home\/mwieder", "spray": 34, "executioncontexts": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",traceBreak,638\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",AddValueToList,498\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,497", "raisemenus": false, "jpegquality": 100, "userlevel": 8, "hidebackdrop": false, "printpapersize": "612,792", "lockscreen": true, "lockmenus": false, "printpaperorientation": "portrait", "screenvcsharedmemory": false, "printrectangle": "0,0,612,792", "fillfore": "255,255,255", "printrect": "0,0,612,792", "bufferhiddenimages": false, "recentnames": "card id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "penfore": "0,0,0", "tracereturn": false, "allowfieldredraw": false, "showfill": true, "address": "(none):\/opt\/runrev\/livecode-4.6.4-gm-3\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\",1782", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\/home\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 65535, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1493,332", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\/home\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593625636, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false, "usesystemdate": false, "pencolor": "0,0,0", "editbkgnd": false, "printersettings": "vv", "privatecolors": false, "statusicon": 0, "printduplex": "none", "roundwidth": 15, "statusicontooltip": "return the statusicontooltip", "hcimportstat": "Loading stack \/home\/mwieder\/Dropbox\/linux\/Plugins\/GLX2 Code Prefs.txt...", "soundchannel": 0, "explicitvariables": false, "multiple": false, "linkvisitedcolor": "81,24,128", "arcangle": 360, "backlist": "card id 1002\nMain\nMain", "rowdel": "[return]", "hideconsolewindows": false, "stackfiletype": "MCRDMSTK", "beepduration": 100, "securemode": false, "recordinput": "dflt", "gridsize": 2, "penwidth": 1, "selectionmode": "intersect", "penheight": 1, "windowboundingrect": "0,146,1920,1080", "navigationarrows": false, "playdestination": "internal", "printrotated": false, "printtextstyle": "return the printtextstyle", "lockerrordialogs": false, "hilitecolor": "0,0,128", "allowinlineinput": true, "systemfileselector": true, "linedelimiter": "[return]", "powerkeys": true, "icon": 0, "beeppitch": 400, "raisepalettes": false, "revruntimebehaviour": 0, "buffermode": "millions", "printcardborders": false, "clipboarddata": "put the custompropertysets of button \"Storage\" of stack kCodeSnapshotSubstack", "allowabledragactions": "copy", "lockmoves": false, "proportionalthumbs": true, "messagemessages": false, "dragdelta": 4, "penpattern": 136, "dragimage": 0, "selectionhandlecolor": "Gray50", "watchedvariables": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,tLoopIndex,tLoopIndex = 4", "brush": 8, "recordsamplesize": 8, "acceptdrop": false, "dragspeed": 0, "textarrows": true, "idleticks": 12, "securitypermissions": "disk,network,process,shell,registryRead,registryWrite,stack,printing,privacy,applescript,doalternate,external", "wholematches": false, "printscale": 1, "paintcompression": "png", "tool": "browse tool", "shellcommand": "\/bin\/sh", "typingrate": 100, "lookandfeel": "Appearance Manager", "remapcolor": true, "columndelimiter": "[tab]", "systemcolorselector": true, "lockcursor": false, "defaultmenubar": "group \"revMenuBar\" of card \"card id 1002\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revmenubar.rev\"", "filetype": "ttxtTEXT", "selectgroupedcontrols": false, "screennopixmaps": false, "printrowsfirst": true, "screensharedmemory": true, "printtextfont": "return the printtextfont", "playloudness": 0, "revlicenseinfo": "Mark WIEDER\n\nCommercial\n1\nWindows,Mac OS X,Linux,Web,iOS,Android,Windows Mobile,Linux Mobile\n\nLocal", "twelvehourtime": true, "videoclipplayer": "xanim", "editmenus": true, "underlinelinks": true, "roundradius": 15, "showgroups": true, "hidepalettes": false, "printpaperscale": 1, "printranges": "all", "recentcards": "card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"\ncard id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\"\ncard id 1038 of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/home.rev\"", "allowinterrupts": true, "recordformat": "aiff", "columndel": "[tab]", "debugcontext": "grunt,17", "doubleclickinterval": 250, "editbackground": false, "roundheight": 15, "syncrate": 20, "itemdel": ", [comma]", "repeatrate": 50, "networkinterfaces": "127.0.0.1\n192.168.0.101", "casesensitive": false, "pointerfocus": true, "eraser": 2, "brushcolor": "255,255,255", "outputtextencoding": "iso-8859-1", "relayergroupedcontrols": false, "raisewindows": false }, "execution_context": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17", "long_name": "button \"Button 1\" of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "execution_handler": "grunt", "script locals": null, "owner": "card id 1002 of stack stack \"Untitled 1\"", "execution_control": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "parameters": null }, "u1456034816034 1": { "comment": "this is a conditional breakpoint", "globals": null, "execution_linenumber": 610, "handler locals": { "tExecutionContexts": "[empty]", "tObjectID": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "tResult": "[empty]" }, "global properties": { "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "brushpattern": 136, "linkhilitecolor": "255,0,0", "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "preservevariables": false, "accentcolor": "0,0,128", "qtidlerate": 50, "movespeed": 200, "emacskeybindings": false, "extendkey": 5, "recordcompression": "raw ", "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\/home\/mwieder", "spray": 34, "executioncontexts": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",trace,610\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTrace,2413\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",AddValueToList,498\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",trace,497", "raisemenus": false, "jpegquality": 100, "userlevel": 8, "hidebackdrop": false, "printpapersize": "612,792", "lockscreen": true, "lockmenus": false, "printpaperorientation": "portrait", "screenvcsharedmemory": false, "printrectangle": "0,0,612,792", "fillfore": "255,255,255", "printrect": "0,0,612,792", "bufferhiddenimages": false, "recentnames": "card id 1002\ncard id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "penfore": "0,0,0", "tracereturn": false, "allowfieldredraw": false, "showfill": true, "address": "(none):\/opt\/runrev\/livecode-4.6.4-gm-3\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\",1782\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",20\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\/home\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 1, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1384,468", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "defaultcursor": 29, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\/home\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593625636, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false, "usesystemdate": false, "pencolor": "0,0,0", "editbkgnd": false, "printersettings": "QDCT", "privatecolors": false, "statusicon": 0, "printduplex": "none", "roundwidth": 15, "statusicontooltip": "return the statusicontooltip", "hcimportstat": "Loading stack \/home\/mwieder\/Dropbox\/linux\/Plugins\/GLX2 Code Prefs.txt...", "soundchannel": 0, "explicitvariables": false, "multiple": false, "linkvisitedcolor": "81,24,128", "arcangle": 360, "backlist": "card id 1002\ncard id 1002\nMain\nMain", "rowdel": "[return]", "hideconsolewindows": false, "stackfiletype": "MCRDMSTK", "beepduration": 100, "securemode": false, "recordinput": "dflt", "gridsize": 2, "penwidth": 1, "selectionmode": "intersect", "penheight": 1, "windowboundingrect": "0,146,1920,1080", "navigationarrows": false, "playdestination": "internal", "printrotated": false, "printtextstyle": "return the printtextstyle", "lockerrordialogs": false, "hilitecolor": "0,0,128", "allowinlineinput": true, "systemfileselector": true, "linedelimiter": "[return]", "powerkeys": true, "icon": 0, "beeppitch": 400, "raisepalettes": false, "revruntimebehaviour": 0, "buffermode": "millions", "printcardborders": false, "clipboarddata": "put the custompropertysets of button \"Storage\" of stack kCodeSnapshotSubstack", "allowabledragactions": "copy", "lockmoves": false, "proportionalthumbs": true, "messagemessages": false, "dragdelta": 4, "penpattern": 136, "dragimage": 0, "selectionhandlecolor": "Gray50", "watchedvariables": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,tLoopIndex,tLoopIndex = 4", "brush": 8, "recordsamplesize": 8, "acceptdrop": false, "dragspeed": 0, "textarrows": true, "idleticks": 12, "securitypermissions": "disk,network,process,shell,registryRead,registryWrite,stack,printing,privacy,applescript,doalternate,external", "wholematches": false, "printscale": 1, "paintcompression": "png", "tool": "browse tool", "shellcommand": "\/bin\/sh", "typingrate": 100, "lookandfeel": "Appearance Manager", "remapcolor": true, "columndelimiter": "[tab]", "systemcolorselector": true, "lockcursor": false, "defaultmenubar": "group \"revMenuBar\" of card \"card id 1002\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revmenubar.rev\"", "filetype": "ttxtTEXT", "selectgroupedcontrols": false, "screennopixmaps": false, "printrowsfirst": true, "screensharedmemory": true, "printtextfont": "return the printtextfont", "playloudness": 0, "revlicenseinfo": "Mark WIEDER\n\nCommercial\n1\nWindows,Mac OS X,Linux,Web,iOS,Android,Windows Mobile,Linux Mobile\n\nLocal", "twelvehourtime": true, "videoclipplayer": "xanim", "editmenus": true, "underlinelinks": true, "roundradius": 15, "showgroups": true, "hidepalettes": false, "printpaperscale": 1, "printranges": "all", "recentcards": "card id 1002 of stack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\"\ncard id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"\ncard id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\"\ncard id 1038 of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/home.rev\"", "allowinterrupts": true, "recordformat": "aiff", "columndel": "[tab]", "debugcontext": "trace,610", "doubleclickinterval": 250, "editbackground": false, "roundheight": 15, "syncrate": 20, "itemdel": ", [comma]", "repeatrate": 50, "networkinterfaces": "127.0.0.1\n192.168.0.101", "casesensitive": false, "pointerfocus": true, "eraser": 2, "brushcolor": "255,255,255", "outputtextencoding": "iso-8859-1", "tracestack": "stack \"Untitled 1\"", "relayergroupedcontrols": false, "raisewindows": false }, "execution_context": "button id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",trace,610", "long_name": "button \"btnDebugFront\" of card \"main\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\"", "execution_handler": "trace", "script locals": { "sTraceReturn": "[empty]", "sTraceUntil": "[empty]", "sRemote": "[empty]", "sRemoteArrays": "[empty]", "sDebugLogging": "[empty]", "sTraceAbort": "[empty]", "sLastObjectID": "[empty]", "sLastScript": "[empty]", "sWatchedVariables": "[empty]", "sDebuggerPort": 44553, "sBreakpoints": "[empty]", "sUsingSockets": false, "sForeignSocket": "[empty]", "sDebuggerHost": "127.0.0.1", "sServerPort": 44554 }, "owner": "card id 1002 of stack stack \"revPowerDebug\"", "execution_control": "button id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\"", "parameters": { "pLineNumber": 17, "pDepth": 1, "pHandlerName": "grunt" } }, "u1456034795118 1": { "comment": "this is a conditional breakpoint", "globals": null, "execution_linenumber": 17, "handler locals": { "abc": "[empty]", "tLoopIndex": 3, "def": { "randomloopindex": { "1hello": [18], "2hello": [62] } } }, "global properties": { "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "brushpattern": 136, "linkhilitecolor": "255,0,0", "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "preservevariables": false, "accentcolor": "0,0,128", "qtidlerate": 50, "movespeed": 200, "emacskeybindings": false, "extendkey": 5, "recordcompression": "raw ", "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\/home\/mwieder", "spray": 34, "executioncontexts": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",traceBreak,638\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",AddValueToList,498\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,497", "raisemenus": false, "jpegquality": 100, "userlevel": 8, "hidebackdrop": false, "printpapersize": "612,792", "lockscreen": true, "lockmenus": false, "printpaperorientation": "portrait", "screenvcsharedmemory": false, "printrectangle": "0,0,612,792", "fillfore": "255,255,255", "printrect": "0,0,612,792", "bufferhiddenimages": false, "recentnames": "card id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "penfore": "0,0,0", "tracereturn": false, "allowfieldredraw": false, "showfill": true, "address": "(none):\/opt\/runrev\/livecode-4.6.4-gm-3\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\",1782", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\/home\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 65535, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1493,332", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\/home\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593625636, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false, "usesystemdate": false, "pencolor": "0,0,0", "editbkgnd": false, "printersettings": "QDCTdasdasdasdasd", "privatecolors": false, "statusicon": 0, "printduplex": "none", "roundwidth": 15, "statusicontooltip": "return the statusicontooltip", "hcimportstat": "Loading stack \/home\/mwieder\/Dropbox\/linux\/Plugins\/GLX2 Code Prefs.txt...", "soundchannel": 0, "explicitvariables": false, "multiple": false, "linkvisitedcolor": "81,24,128", "arcangle": 360, "backlist": "card id 1002\nMain\nMain", "rowdel": "[return]", "hideconsolewindows": false, "stackfiletype": "MCRDMSTK", "beepduration": 100, "securemode": false, "recordinput": "dflt", "gridsize": 2, "penwidth": 1, "selectionmode": "intersect", "penheight": 1, "windowboundingrect": "0,146,1920,1080", "navigationarrows": false, "playdestination": "internal", "printrotated": false, "printtextstyle": "return the printtextstyle", "lockerrordialogs": false, "hilitecolor": "0,0,128", "allowinlineinput": true, "systemfileselector": true, "linedelimiter": "[return]", "powerkeys": true, "icon": 0, "beeppitch": 400, "raisepalettes": false, "revruntimebehaviour": 0, "buffermode": "millions", "printcardborders": false, "clipboarddata": "put the custompropertysets of button \"Storage\" of stack kCodeSnapshotSubstack", "allowabledragactions": "copy", "lockmoves": false, "proportionalthumbs": true, "messagemessages": false, "dragdelta": 4, "penpattern": 136, "dragimage": 0, "selectionhandlecolor": "Gray50", "watchedvariables": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,tLoopIndex,tLoopIndex = 4", "brush": 8, "recordsamplesize": 8, "acceptdrop": false, "dragspeed": 0, "textarrows": true, "idleticks": 12, "securitypermissions": "disk,network,process,shell,registryRead,registryWrite,stack,printing,privacy,applescript,doalternate,external", "wholematches": false, "printscale": 1, "paintcompression": "png", "tool": "browse tool", "shellcommand": "\/bin\/sh", "typingrate": 100, "lookandfeel": "Appearance Manager", "remapcolor": true, "columndelimiter": "[tab]", "systemcolorselector": true, "lockcursor": false, "defaultmenubar": "group \"revMenuBar\" of card \"card id 1002\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revmenubar.rev\"", "filetype": "ttxtTEXT", "selectgroupedcontrols": false, "screennopixmaps": false, "printrowsfirst": true, "screensharedmemory": true, "printtextfont": "return the printtextfont", "playloudness": 0, "revlicenseinfo": "Mark WIEDER\n\nCommercial\n1\nWindows,Mac OS X,Linux,Web,iOS,Android,Windows Mobile,Linux Mobile\n\nLocal", "twelvehourtime": true, "videoclipplayer": "xanim", "editmenus": true, "underlinelinks": true, "roundradius": 15, "showgroups": true, "hidepalettes": false, "printpaperscale": 1, "printranges": "all", "recentcards": "card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"\ncard id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\"\ncard id 1038 of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/home.rev\"", "allowinterrupts": true, "recordformat": "aiff", "columndel": "[tab]", "debugcontext": "grunt,17", "doubleclickinterval": 250, "editbackground": false, "roundheight": 15, "syncrate": 20, "itemdel": ", [comma]", "repeatrate": 50, "networkinterfaces": "127.0.0.1\n192.168.0.101", "casesensitive": false, "pointerfocus": true, "eraser": 2, "brushcolor": "255,255,255", "outputtextencoding": "iso-8859-1", "relayergroupedcontrols": false, "raisewindows": false }, "execution_context": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17", "long_name": "button \"Button 1\" of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "execution_handler": "grunt", "script locals": null, "owner": "card id 1002 of stack stack \"Untitled 1\"", "execution_control": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "parameters": null }, "u1456034795055 1": { "comment": "this is a conditional breakpoint", "globals": null, "execution_linenumber": 17, "handler locals": { "abc": "[empty]", "tLoopIndex": 2, "def": { "randomloopindex": { "1hello": [18] } } }, "global properties": { "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "brushpattern": 136, "linkhilitecolor": "255,0,0", "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "preservevariables": false, "accentcolor": "0,0,128", "qtidlerate": 50, "movespeed": 200, "emacskeybindings": false, "extendkey": 5, "recordcompression": "raw ", "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\/home\/mwieder", "spray": 34, "executioncontexts": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",traceBreak,638\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",AddValueToList,498\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,497", "raisemenus": false, "jpegquality": 100, "userlevel": 8, "hidebackdrop": false, "printpapersize": "612,792", "lockscreen": true, "lockmenus": false, "printpaperorientation": "portrait", "screenvcsharedmemory": false, "printrectangle": "0,0,612,792", "fillfore": "255,255,255", "printrect": "0,0,612,792", "bufferhiddenimages": false, "recentnames": "card id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "penfore": "0,0,0", "tracereturn": false, "allowfieldredraw": false, "showfill": true, "address": "(none):\/opt\/runrev\/livecode-4.6.4-gm-3\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\",1782", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\/home\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 65535, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1493,332", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\/home\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593625636, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false, "usesystemdate": false, "pencolor": "0,0,0", "editbkgnd": false, "printersettings": "QDCTdasdasdasdasd", "privatecolors": false, "statusicon": 0, "printduplex": "none", "roundwidth": 15, "statusicontooltip": "return the statusicontooltip", "hcimportstat": "Loading stack \/home\/mwieder\/Dropbox\/linux\/Plugins\/GLX2 Code Prefs.txt...", "soundchannel": 0, "explicitvariables": false, "multiple": false, "linkvisitedcolor": "81,24,128", "arcangle": 360, "backlist": "card id 1002\nMain\nMain", "rowdel": "[return]", "hideconsolewindows": false, "stackfiletype": "MCRDMSTK", "beepduration": 100, "securemode": false, "recordinput": "dflt", "gridsize": 2, "penwidth": 1, "selectionmode": "intersect", "penheight": 1, "windowboundingrect": "0,146,1920,1080", "navigationarrows": false, "playdestination": "internal", "printrotated": false, "printtextstyle": "return the printtextstyle", "lockerrordialogs": false, "hilitecolor": "0,0,128", "allowinlineinput": true, "systemfileselector": true, "linedelimiter": "[return]", "powerkeys": true, "icon": 0, "beeppitch": 400, "raisepalettes": false, "revruntimebehaviour": 0, "buffermode": "millions", "printcardborders": false, "clipboarddata": "put the custompropertysets of button \"Storage\" of stack kCodeSnapshotSubstack", "allowabledragactions": "copy", "lockmoves": false, "proportionalthumbs": true, "messagemessages": false, "dragdelta": 4, "penpattern": 136, "dragimage": 0, "selectionhandlecolor": "Gray50", "watchedvariables": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,tLoopIndex,tLoopIndex = 4", "brush": 8, "recordsamplesize": 8, "acceptdrop": false, "dragspeed": 0, "textarrows": true, "idleticks": 12, "securitypermissions": "disk,network,process,shell,registryRead,registryWrite,stack,printing,privacy,applescript,doalternate,external", "wholematches": false, "printscale": 1, "paintcompression": "png", "tool": "browse tool", "shellcommand": "\/bin\/sh", "typingrate": 100, "lookandfeel": "Appearance Manager", "remapcolor": true, "columndelimiter": "[tab]", "systemcolorselector": true, "lockcursor": false, "defaultmenubar": "group \"revMenuBar\" of card \"card id 1002\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revmenubar.rev\"", "filetype": "ttxtTEXT", "selectgroupedcontrols": false, "screennopixmaps": false, "printrowsfirst": true, "screensharedmemory": true, "printtextfont": "return the printtextfont", "playloudness": 0, "revlicenseinfo": "Mark WIEDER\n\nCommercial\n1\nWindows,Mac OS X,Linux,Web,iOS,Android,Windows Mobile,Linux Mobile\n\nLocal", "twelvehourtime": true, "videoclipplayer": "xanim", "editmenus": true, "underlinelinks": true, "roundradius": 15, "showgroups": true, "hidepalettes": false, "printpaperscale": 1, "printranges": "all", "recentcards": "card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"\ncard id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\"\ncard id 1038 of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/home.rev\"", "allowinterrupts": true, "recordformat": "aiff", "columndel": "[tab]", "debugcontext": "grunt,17", "doubleclickinterval": 250, "editbackground": false, "roundheight": 15, "syncrate": 20, "itemdel": ", [comma]", "repeatrate": 50, "networkinterfaces": "127.0.0.1\n192.168.0.101", "casesensitive": false, "pointerfocus": true, "eraser": 2, "brushcolor": "255,255,255", "outputtextencoding": "iso-8859-1", "relayergroupedcontrols": false, "raisewindows": false }, "execution_context": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17", "long_name": "button \"Button 1\" of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "execution_handler": "grunt", "script locals": null, "owner": "card id 1002 of stack stack \"Untitled 1\"", "execution_control": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "parameters": null }, "u1456034816162 1": { "comment": "this is a conditional breakpoint", "globals": null, "execution_linenumber": 17, "handler locals": { "abc": "[empty]", "tLoopIndex": 5, "def": { "randomloopindex": { "4hello": [115], "1hello": [18], "2hello": [62], "3hello": [52] } } }, "global properties": { "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "brushpattern": 136, "linkhilitecolor": "255,0,0", "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "preservevariables": false, "accentcolor": "0,0,128", "qtidlerate": 50, "movespeed": 200, "emacskeybindings": false, "extendkey": 5, "recordcompression": "raw ", "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\/home\/mwieder", "spray": 34, "executioncontexts": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",traceBreak,638\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",AddValueToList,498\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,497", "raisemenus": false, "jpegquality": 100, "userlevel": 8, "hidebackdrop": false, "printpapersize": "612,792", "lockscreen": true, "lockmenus": false, "printpaperorientation": "portrait", "screenvcsharedmemory": false, "printrectangle": "0,0,612,792", "fillfore": "255,255,255", "printrect": "0,0,612,792", "bufferhiddenimages": false, "recentnames": "card id 1002\ncard id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "penfore": "0,0,0", "tracereturn": false, "allowfieldredraw": false, "showfill": true, "address": "(none):\/opt\/runrev\/livecode-4.6.4-gm-3\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\",1782\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",20\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\/home\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 1, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1384,468", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "defaultcursor": 29, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\/home\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593625636, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false, "usesystemdate": false, "pencolor": "0,0,0", "editbkgnd": false, "printersettings": "QDCTdasdasdasdasd", "privatecolors": false, "statusicon": 0, "printduplex": "none", "roundwidth": 15, "statusicontooltip": "return the statusicontooltip", "hcimportstat": "Loading stack \/home\/mwieder\/Dropbox\/linux\/Plugins\/GLX2 Code Prefs.txt...", "soundchannel": 0, "explicitvariables": false, "multiple": false, "linkvisitedcolor": "81,24,128", "arcangle": 360, "backlist": "card id 1002\ncard id 1002\nMain\nMain", "rowdel": "[return]", "hideconsolewindows": false, "stackfiletype": "MCRDMSTK", "beepduration": 100, "securemode": false, "recordinput": "dflt", "gridsize": 2, "penwidth": 1, "selectionmode": "intersect", "penheight": 1, "windowboundingrect": "0,146,1920,1080", "navigationarrows": false, "playdestination": "internal", "printrotated": false, "printtextstyle": "return the printtextstyle", "lockerrordialogs": false, "hilitecolor": "0,0,128", "allowinlineinput": true, "systemfileselector": true, "linedelimiter": "[return]", "powerkeys": true, "icon": 0, "beeppitch": 400, "raisepalettes": false, "revruntimebehaviour": 0, "buffermode": "millions", "printcardborders": false, "clipboarddata": "put the custompropertysets of button \"Storage\" of stack kCodeSnapshotSubstack", "allowabledragactions": "copy", "lockmoves": false, "proportionalthumbs": true, "messagemessages": false, "dragdelta": 4, "penpattern": 136, "dragimage": 0, "selectionhandlecolor": "Gray50", "watchedvariables": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,tLoopIndex,tLoopIndex = 4", "brush": 8, "recordsamplesize": 8, "acceptdrop": false, "dragspeed": 0, "textarrows": true, "idleticks": 12, "securitypermissions": "disk,network,process,shell,registryRead,registryWrite,stack,printing,privacy,applescript,doalternate,external", "wholematches": false, "printscale": 1, "paintcompression": "png", "tool": "browse tool", "shellcommand": "\/bin\/sh", "typingrate": 100, "lookandfeel": "Appearance Manager", "remapcolor": true, "columndelimiter": "[tab]", "systemcolorselector": true, "lockcursor": false, "defaultmenubar": "group \"revMenuBar\" of card \"card id 1002\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revmenubar.rev\"", "filetype": "ttxtTEXT", "selectgroupedcontrols": false, "screennopixmaps": false, "printrowsfirst": true, "screensharedmemory": true, "printtextfont": "return the printtextfont", "playloudness": 0, "revlicenseinfo": "Mark WIEDER\n\nCommercial\n1\nWindows,Mac OS X,Linux,Web,iOS,Android,Windows Mobile,Linux Mobile\n\nLocal", "twelvehourtime": true, "videoclipplayer": "xanim", "editmenus": true, "underlinelinks": true, "roundradius": 15, "showgroups": true, "hidepalettes": false, "printpaperscale": 1, "printranges": "all", "recentcards": "card id 1002 of stack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\"\ncard id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"\ncard id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\"\ncard id 1038 of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/home.rev\"", "allowinterrupts": true, "recordformat": "aiff", "columndel": "[tab]", "debugcontext": "grunt,17", "doubleclickinterval": 250, "editbackground": false, "roundheight": 15, "syncrate": 20, "itemdel": ", [comma]", "repeatrate": 50, "networkinterfaces": "127.0.0.1\n192.168.0.101", "casesensitive": false, "pointerfocus": true, "eraser": 2, "brushcolor": "255,255,255", "outputtextencoding": "iso-8859-1", "relayergroupedcontrols": false, "raisewindows": false }, "execution_context": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17", "long_name": "button \"Button 1\" of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "execution_handler": "grunt", "script locals": null, "owner": "card id 1002 of stack stack \"Untitled 1\"", "execution_control": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "parameters": null }, "u1456034816098 1": { "comment": "this is a conditional breakpoint", "globals": null, "execution_linenumber": 17, "handler locals": { "abc": "[empty]", "tLoopIndex": 4, "def": { "randomloopindex": { "1hello": [18], "2hello": [62], "3hello": [52] } } }, "global properties": { "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "brushpattern": 136, "linkhilitecolor": "255,0,0", "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "preservevariables": false, "accentcolor": "0,0,128", "qtidlerate": 50, "movespeed": 200, "emacskeybindings": false, "extendkey": 5, "recordcompression": "raw ", "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\/home\/mwieder", "spray": 34, "executioncontexts": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",traceBreak,638\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",AddValueToList,498\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,497", "raisemenus": false, "jpegquality": 100, "userlevel": 8, "hidebackdrop": false, "printpapersize": "612,792", "lockscreen": true, "lockmenus": false, "printpaperorientation": "portrait", "screenvcsharedmemory": false, "printrectangle": "0,0,612,792", "fillfore": "255,255,255", "printrect": "0,0,612,792", "bufferhiddenimages": false, "recentnames": "card id 1002\ncard id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "penfore": "0,0,0", "tracereturn": false, "allowfieldredraw": false, "showfill": true, "address": "(none):\/opt\/runrev\/livecode-4.6.4-gm-3\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\",1782\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",20\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\/home\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 1, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1384,468", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "defaultcursor": 29, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\/home\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593625636, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false, "usesystemdate": false, "pencolor": "0,0,0", "editbkgnd": false, "printersettings": "QDCTdasdasdasdasd", "privatecolors": false, "statusicon": 0, "printduplex": "none", "roundwidth": 15, "statusicontooltip": "return the statusicontooltip", "hcimportstat": "Loading stack \/home\/mwieder\/Dropbox\/linux\/Plugins\/GLX2 Code Prefs.txt...", "soundchannel": 0, "explicitvariables": false, "multiple": false, "linkvisitedcolor": "81,24,128", "arcangle": 360, "backlist": "card id 1002\ncard id 1002\nMain\nMain", "rowdel": "[return]", "hideconsolewindows": false, "stackfiletype": "MCRDMSTK", "beepduration": 100, "securemode": false, "recordinput": "dflt", "gridsize": 2, "penwidth": 1, "selectionmode": "intersect", "penheight": 1, "windowboundingrect": "0,146,1920,1080", "navigationarrows": false, "playdestination": "internal", "printrotated": false, "printtextstyle": "return the printtextstyle", "lockerrordialogs": false, "hilitecolor": "0,0,128", "allowinlineinput": true, "systemfileselector": true, "linedelimiter": "[return]", "powerkeys": true, "icon": 0, "beeppitch": 400, "raisepalettes": false, "revruntimebehaviour": 0, "buffermode": "millions", "printcardborders": false, "clipboarddata": "put the custompropertysets of button \"Storage\" of stack kCodeSnapshotSubstack", "allowabledragactions": "copy", "lockmoves": false, "proportionalthumbs": true, "messagemessages": false, "dragdelta": 4, "penpattern": 136, "dragimage": 0, "selectionhandlecolor": "Gray50", "watchedvariables": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,tLoopIndex,tLoopIndex = 4", "brush": 8, "recordsamplesize": 8, "acceptdrop": false, "dragspeed": 0, "textarrows": true, "idleticks": 12, "securitypermissions": "disk,network,process,shell,registryRead,registryWrite,stack,printing,privacy,applescript,doalternate,external", "wholematches": false, "printscale": 1, "paintcompression": "png", "tool": "browse tool", "shellcommand": "\/bin\/sh", "typingrate": 100, "lookandfeel": "Appearance Manager", "remapcolor": true, "columndelimiter": "[tab]", "systemcolorselector": true, "lockcursor": false, "defaultmenubar": "group \"revMenuBar\" of card \"card id 1002\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revmenubar.rev\"", "filetype": "ttxtTEXT", "selectgroupedcontrols": false, "screennopixmaps": false, "printrowsfirst": true, "screensharedmemory": true, "printtextfont": "return the printtextfont", "playloudness": 0, "revlicenseinfo": "Mark WIEDER\n\nCommercial\n1\nWindows,Mac OS X,Linux,Web,iOS,Android,Windows Mobile,Linux Mobile\n\nLocal", "twelvehourtime": true, "videoclipplayer": "xanim", "editmenus": true, "underlinelinks": true, "roundradius": 15, "showgroups": true, "hidepalettes": false, "printpaperscale": 1, "printranges": "all", "recentcards": "card id 1002 of stack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\"\ncard id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"\ncard id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\"\ncard id 1038 of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/home.rev\"", "allowinterrupts": true, "recordformat": "aiff", "columndel": "[tab]", "debugcontext": "grunt,17", "doubleclickinterval": 250, "editbackground": false, "roundheight": 15, "syncrate": 20, "itemdel": ", [comma]", "repeatrate": 50, "networkinterfaces": "127.0.0.1\n192.168.0.101", "casesensitive": false, "pointerfocus": true, "eraser": 2, "brushcolor": "255,255,255", "outputtextencoding": "iso-8859-1", "relayergroupedcontrols": false, "raisewindows": false }, "execution_context": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17", "long_name": "button \"Button 1\" of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "execution_handler": "grunt", "script locals": null, "owner": "card id 1002 of stack stack \"Untitled 1\"", "execution_control": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "parameters": null }, "u1456034816226 1": { "comment": "this is a conditional breakpoint", "globals": null, "execution_linenumber": 17, "handler locals": { "abc": "[empty]", "tLoopIndex": 6, "def": { "randomloopindex": { "4hello": [115], "5hello": [65], "1hello": [18], "2hello": [62], "3hello": [52] } } }, "global properties": { "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "brushpattern": 136, "linkhilitecolor": "255,0,0", "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "preservevariables": false, "accentcolor": "0,0,128", "qtidlerate": 50, "movespeed": 200, "emacskeybindings": false, "extendkey": 5, "recordcompression": "raw ", "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\/home\/mwieder", "spray": 34, "executioncontexts": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",traceBreak,638\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",AddValueToList,498\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,497", "raisemenus": false, "jpegquality": 100, "userlevel": 8, "hidebackdrop": false, "printpapersize": "612,792", "lockscreen": true, "lockmenus": false, "printpaperorientation": "portrait", "screenvcsharedmemory": false, "printrectangle": "0,0,612,792", "fillfore": "255,255,255", "printrect": "0,0,612,792", "bufferhiddenimages": false, "recentnames": "card id 1002\ncard id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "penfore": "0,0,0", "tracereturn": false, "allowfieldredraw": false, "showfill": true, "address": "(none):\/opt\/runrev\/livecode-4.6.4-gm-3\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\",1782\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",20\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\/home\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 1, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1384,468", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "defaultcursor": 29, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\/home\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593625636, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false, "usesystemdate": false, "pencolor": "0,0,0", "editbkgnd": false, "printersettings": "QDCTdasdasdasdasd", "privatecolors": false, "statusicon": 0, "printduplex": "none", "roundwidth": 15, "statusicontooltip": "return the statusicontooltip", "hcimportstat": "Loading stack \/home\/mwieder\/Dropbox\/linux\/Plugins\/GLX2 Code Prefs.txt...", "soundchannel": 0, "explicitvariables": false, "multiple": false, "linkvisitedcolor": "81,24,128", "arcangle": 360, "backlist": "card id 1002\ncard id 1002\nMain\nMain", "rowdel": "[return]", "hideconsolewindows": false, "stackfiletype": "MCRDMSTK", "beepduration": 100, "securemode": false, "recordinput": "dflt", "gridsize": 2, "penwidth": 1, "selectionmode": "intersect", "penheight": 1, "windowboundingrect": "0,146,1920,1080", "navigationarrows": false, "playdestination": "internal", "printrotated": false, "printtextstyle": "return the printtextstyle", "lockerrordialogs": false, "hilitecolor": "0,0,128", "allowinlineinput": true, "systemfileselector": true, "linedelimiter": "[return]", "powerkeys": true, "icon": 0, "beeppitch": 400, "raisepalettes": false, "revruntimebehaviour": 0, "buffermode": "millions", "printcardborders": false, "clipboarddata": "put the custompropertysets of button \"Storage\" of stack kCodeSnapshotSubstack", "allowabledragactions": "copy", "lockmoves": false, "proportionalthumbs": true, "messagemessages": false, "dragdelta": 4, "penpattern": 136, "dragimage": 0, "selectionhandlecolor": "Gray50", "watchedvariables": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,tLoopIndex,tLoopIndex = 4", "brush": 8, "recordsamplesize": 8, "acceptdrop": false, "dragspeed": 0, "textarrows": true, "idleticks": 12, "securitypermissions": "disk,network,process,shell,registryRead,registryWrite,stack,printing,privacy,applescript,doalternate,external", "wholematches": false, "printscale": 1, "paintcompression": "png", "tool": "browse tool", "shellcommand": "\/bin\/sh", "typingrate": 100, "lookandfeel": "Appearance Manager", "remapcolor": true, "columndelimiter": "[tab]", "systemcolorselector": true, "lockcursor": false, "defaultmenubar": "group \"revMenuBar\" of card \"card id 1002\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revmenubar.rev\"", "filetype": "ttxtTEXT", "selectgroupedcontrols": false, "screennopixmaps": false, "printrowsfirst": true, "screensharedmemory": true, "printtextfont": "return the printtextfont", "playloudness": 0, "revlicenseinfo": "Mark WIEDER\n\nCommercial\n1\nWindows,Mac OS X,Linux,Web,iOS,Android,Windows Mobile,Linux Mobile\n\nLocal", "twelvehourtime": true, "videoclipplayer": "xanim", "editmenus": true, "underlinelinks": true, "roundradius": 15, "showgroups": true, "hidepalettes": false, "printpaperscale": 1, "printranges": "all", "recentcards": "card id 1002 of stack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\"\ncard id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"\ncard id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\"\ncard id 1038 of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/home.rev\"", "allowinterrupts": true, "recordformat": "aiff", "columndel": "[tab]", "debugcontext": "grunt,17", "doubleclickinterval": 250, "editbackground": false, "roundheight": 15, "syncrate": 20, "itemdel": ", [comma]", "repeatrate": 50, "networkinterfaces": "127.0.0.1\n192.168.0.101", "casesensitive": false, "pointerfocus": true, "eraser": 2, "brushcolor": "255,255,255", "outputtextencoding": "iso-8859-1", "relayergroupedcontrols": false, "raisewindows": false }, "execution_context": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17", "long_name": "button \"Button 1\" of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "execution_handler": "grunt", "script locals": null, "owner": "card id 1002 of stack stack \"Untitled 1\"", "execution_control": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "parameters": null } , "u1456025175516 1": { "comment": "this is a conditional breakpoint", "handler locals": { "abc": "[empty]", "tLoopIndex": 3, "def": { "randomloopindex": { "1hello": [66], "2hello": [47] } } }, "execution_linenumber": 17, "globals": null, "global properties": { "usesystemdate": false, "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "pencolor": "0,0,0", "brushpattern": 136, "editbkgnd": false, "linkhilitecolor": "255,0,0", "printersettings": null, "privatecolors": false, "statusicon": 0, "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "accentcolor": "0,0,128", "preservevariables": false, "qtidlerate": 50, "emacskeybindings": false, "movespeed": 200, "recordcompression": "raw ", "extendkey": 5, "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\\\/home\\\/mwieder", "spray": 34, "raisemenus": false, "executioncontexts": "button id 1003 of card id 1002 of stack \"\\\/home\\\/mwieder\\\/Desktop\\\/Rails class\\\/from desktop\\\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\\\/home\\\/mwieder\\\/Desktop\\\/Rails class\\\/from desktop\\\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\\\/home\\\/mwieder\\\/Dropbox\\\/linux\\\/Plugins\\\/PowerDebug.rev\",traceBreak,638\nstack \"\\\/home\\\/mwieder\\\/Dropbox\\\/linux\\\/Plugins\\\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\\\/home\\\/mwieder\\\/Dropbox\\\/linux\\\/Plugins\\\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\\\/home\\\/mwieder\\\/Dropbox\\\/linux\\\/Plugins\\\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\\\/home\\\/mwieder\\\/Dropbox\\\/linux\\\/Plugins\\\/PowerDebug.rev\",AddValueToList,498\nbutton id 1003 of card id 1002 of stack \"\\\/home\\\/mwieder\\\/Desktop\\\/Rails class\\\/from desktop\\\/tracebreaktester.livecode\",grunt,497", "userlevel": 8, "jpegquality": 100, "printpapersize": "612,792", "hidebackdrop": false, "screenvcsharedmemory": false, "printpaperorientation": "portrait", "lockmenus": false, "lockscreen": true, "printrectangle": "0,0,612,792", "printrect": "0,0,612,792", "fillfore": "255,255,255", "bufferhiddenimages": false, "recentnames": "card id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "tracereturn": false, "penfore": "0,0,0", "showfill": true, "allowfieldredraw": false, "address": "(none):\\\/opt\\\/runrev\\\/livecode-4.6.4-gm-3\\\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\\\/opt\\\/runrev\\\/livecode-4.6.4-gm-3\\\/Toolset\\\/revscripteditor.rev\",1782", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\\\/home\\\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 65535, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1568,327", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\\\/home\\\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593616951, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false } }, "u1456034816290 1": { "comment": "this is a conditional breakpoint", "globals": null, "execution_linenumber": 17, "handler locals": { "abc": "[empty]", "tLoopIndex": 7, "def": { "randomloopindex": { "4hello": [115], "5hello": [65], "6hello": [51], "1hello": [18], "2hello": [62], "3hello": [52] } } }, "global properties": { "penpat": 136, "repeatdelay": 250, "showinvisibles": false, "brushpattern": 136, "linkhilitecolor": "255,0,0", "startangle": 0, "filled": true, "outputlineendings": "return the outputlineendings", "systemprintselector": true, "useunicode": false, "preservevariables": false, "accentcolor": "0,0,128", "qtidlerate": 50, "movespeed": 200, "emacskeybindings": false, "extendkey": 5, "recordcompression": "raw ", "centered": false, "printcolors": true, "effectrate": 2000, "printgutters": "36,36", "fillpat": 136, "printeroutput": "device", "linkcolor": "0,0,239", "recording": false, "editbg": false, "printcopies": 1, "availableprinters": "MFC7460\nOki-C3200", "markercolor": "0,0,128", "centurycutoff": 35, "umask": 18, "allowkeyinfield": true, "doubleclickdelta": 4, "pattern": 136, "preservevars": false, "numberformat": "0.######", "slices": 16, "lockcolormap": false, "multispace": 1, "processtype": "foreground", "activatepalettes": true, "blindtyping": true, "directory": "\/home\/mwieder", "spray": 34, "executioncontexts": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",mouseUp,8\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17\nbutton id 2953 of card id 1002 of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",traceBreak,638\nstack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",pwrTraceBreak,2691\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",glxTakeSnapShot,23\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",TakeExecutionSnapshot,472\nstack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\",AddValueToList,498\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,497", "raisemenus": false, "jpegquality": 100, "userlevel": 8, "hidebackdrop": false, "printpapersize": "612,792", "lockscreen": true, "lockmenus": false, "printpaperorientation": "portrait", "screenvcsharedmemory": false, "printrectangle": "0,0,612,792", "fillfore": "255,255,255", "printrect": "0,0,612,792", "bufferhiddenimages": false, "recentnames": "card id 1002\ncard id 1002\nMain\nMain", "itemdelimiter": ", [comma]", "penfore": "0,0,0", "tracereturn": false, "allowfieldredraw": false, "showfill": true, "address": "(none):\/opt\/runrev\/livecode-4.6.4-gm-3\/livecode.x86", "tracedelay": 0, "rowdelimiter": "[return]", "printcollate": false, "breakpoints": "group id 1046 of card id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\",1782\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",20\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19\nbutton id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",19", "thirdcolor": "0,0,128", "dontusens": false, "recordchannels": 1, "folder": "\/home\/mwieder", "printername": "MFC7460", "beepsound": "system", "printtextalign": "return the printtextalign", "printtextsize": "return the printtextsize", "vcplayer": "xanim", "convertoctals": false, "colormap": "fixed", "multieffect": false, "beeploudness": 50, "idlerate": 200, "printpaperrectangle": "0,0,612,792", "printpaperrect": "0,0,612,792", "recordrate": 22.05, "traceuntil": 1, "longwindowtitles": false, "linedel": "[return]", "printmargins": "72,72,72,72", "colorworld": true, "screenmouseloc": "1384,468", "traceabort": false, "linesize": 1, "polysides": 4, "stackfileversion": 2.7, "sockettimeoutinterval": 10000, "dontuseqt": false, "usermodify": true, "serialcontrolstring": "baud=9600 parity=N data=8 stop=1", "roundends": false, "tooltipdelay": 500, "defaultcursor": 29, "printtextheight": "return the printtextheight", "screengamma": 2.2, "dragaction": "none", "grid": true, "backdrop": "none", "explicitvars": false, "lockmessages": false, "defaultfolder": "\/home\/mwieder", "recursionlimit": 400000, "lowresolutiontimers": false, "lockrecent": false, "randomseed": 1593625636, "defaultstack": "stack \"PowerDebugCodeSnapshot\"", "blinkrate": 600, "stacklimit": 1048576, "editscripts": true, "dontuseqteffects": false, "usesystemdate": false, "pencolor": "0,0,0", "editbkgnd": false, "printersettings": "QDCTdasdasdasdasd", "privatecolors": false, "statusicon": 0, "printduplex": "none", "roundwidth": 15, "statusicontooltip": "return the statusicontooltip", "hcimportstat": "Loading stack \/home\/mwieder\/Dropbox\/linux\/Plugins\/GLX2 Code Prefs.txt...", "soundchannel": 0, "explicitvariables": false, "multiple": false, "linkvisitedcolor": "81,24,128", "arcangle": 360, "backlist": "card id 1002\ncard id 1002\nMain\nMain", "rowdel": "[return]", "hideconsolewindows": false, "stackfiletype": "MCRDMSTK", "beepduration": 100, "securemode": false, "recordinput": "dflt", "gridsize": 2, "penwidth": 1, "selectionmode": "intersect", "penheight": 1, "windowboundingrect": "0,146,1920,1080", "navigationarrows": false, "playdestination": "internal", "printrotated": false, "printtextstyle": "return the printtextstyle", "lockerrordialogs": false, "hilitecolor": "0,0,128", "allowinlineinput": true, "systemfileselector": true, "linedelimiter": "[return]", "powerkeys": true, "icon": 0, "beeppitch": 400, "raisepalettes": false, "revruntimebehaviour": 0, "buffermode": "millions", "printcardborders": false, "clipboarddata": "put the custompropertysets of button \"Storage\" of stack kCodeSnapshotSubstack", "allowabledragactions": "copy", "lockmoves": false, "proportionalthumbs": true, "messagemessages": false, "dragdelta": 4, "penpattern": 136, "dragimage": 0, "selectionhandlecolor": "Gray50", "watchedvariables": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,tLoopIndex,tLoopIndex = 4", "brush": 8, "recordsamplesize": 8, "acceptdrop": false, "dragspeed": 0, "textarrows": true, "idleticks": 12, "securitypermissions": "disk,network,process,shell,registryRead,registryWrite,stack,printing,privacy,applescript,doalternate,external", "wholematches": false, "printscale": 1, "paintcompression": "png", "tool": "browse tool", "shellcommand": "\/bin\/sh", "typingrate": 100, "lookandfeel": "Appearance Manager", "remapcolor": true, "columndelimiter": "[tab]", "systemcolorselector": true, "lockcursor": false, "defaultmenubar": "group \"revMenuBar\" of card \"card id 1002\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revmenubar.rev\"", "filetype": "ttxtTEXT", "selectgroupedcontrols": false, "screennopixmaps": false, "printrowsfirst": true, "screensharedmemory": true, "printtextfont": "return the printtextfont", "playloudness": 0, "revlicenseinfo": "Mark WIEDER\n\nCommercial\n1\nWindows,Mac OS X,Linux,Web,iOS,Android,Windows Mobile,Linux Mobile\n\nLocal", "twelvehourtime": true, "videoclipplayer": "xanim", "editmenus": true, "underlinelinks": true, "roundradius": 15, "showgroups": true, "hidepalettes": false, "printpaperscale": 1, "printranges": "all", "recentcards": "card id 1002 of stack \"PowerDebugCodeSnapshot\" of stack \"\/home\/mwieder\/Dropbox\/linux\/Plugins\/PowerDebug.rev\"\ncard id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"\ncard id 1002 of stack \"revNewScriptEditor 1\" of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/revscripteditor.rev\"\ncard id 1038 of stack \"\/opt\/runrev\/livecode-4.6.4-gm-3\/Toolset\/home.rev\"", "allowinterrupts": true, "recordformat": "aiff", "columndel": "[tab]", "debugcontext": "grunt,17", "doubleclickinterval": 250, "editbackground": false, "roundheight": 15, "syncrate": 20, "itemdel": ", [comma]", "repeatrate": 50, "networkinterfaces": "127.0.0.1\n192.168.0.101", "casesensitive": false, "pointerfocus": true, "eraser": 2, "brushcolor": "255,255,255", "outputtextencoding": "iso-8859-1", "relayergroupedcontrols": false, "raisewindows": false }, "execution_context": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\",grunt,17", "long_name": "button \"Button 1\" of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "execution_handler": "grunt", "script locals": null, "owner": "card id 1002 of stack stack \"Untitled 1\"", "execution_control": "button id 1003 of card id 1002 of stack \"\/home\/mwieder\/Desktop\/Rails class\/from desktop\/tracebreaktester.livecode\"", "parameters": null } } } --------------------------------------------------------------------------------