initial: nsJson plugin 1.1.3

This commit is contained in:
2026-04-29 23:19:40 +02:00
commit 0947690677
61 changed files with 10173 additions and 0 deletions
+193
View File
@@ -0,0 +1,193 @@
!include MUI2.nsh
Name `nsJSON plug-in`
OutFile nsJSON_ConsoleExec.exe
RequestExecutionLevel user
ShowInstDetails show
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE ComponentsPage_Leave
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
Section
CreateDirectory $EXEDIR\Output
SectionEnd
Section /o `Console App` NATIVE
InitPluginsDir
StrCpy $R0 $PLUGINSDIR\ConsoleApp.exe
File /oname=$R0 Bin\ConsoleApp.exe
nsJSON::Set /tree ConsoleExec /value `{ "Path": "$R0", "WorkingDir": "$PLUGINSDIR", "RawOutput": true }`
; Provide arguments as a single string or an array.
nsJSON::Set /tree ConsoleExec Arguments /value `[]`
nsJSON::Set /tree ConsoleExec Arguments /value `"arg1"`
nsJSON::Set /tree ConsoleExec Arguments /value `"arg2"`
; Provide input as a single string or an array.
nsJSON::Set /tree ConsoleExec Input /value `"hello"`
; Export the tree to file for debugging.
DetailPrint `Generate: $EXEDIR\Output\ConsoleExecInput.json from ConsoleExec`
nsJSON::Serialize /tree ConsoleExec /format /file $EXEDIR\Output\ConsoleExecInput.json
; Execute the console application.
DetailPrint `Exec: $R0`
nsJSON::Set /tree ConsoleExecOutput /exec ConsoleExec
; Save the output to file.
DetailPrint `Generate: $EXEDIR\Output\ConsoleExecOutput.json from ConsoleExecOutput`
nsJSON::Serialize /tree ConsoleExecOutput /format /file $EXEDIR\Output\ConsoleExecOutput.json
SectionEnd
Section /o `Async Console App` NATIVEASYNC
InitPluginsDir
StrCpy $R0 $PLUGINSDIR\ConsoleApp.exe
File /oname=$R0 Bin\ConsoleApp.exe
nsJSON::Set /tree ConsoleExec /value `{ "Async": true, "Path": "$R0", "WorkingDir": "$PLUGINSDIR", "RawOutput": true }`
; Provide arguments as a single string or an array.
nsJSON::Set /tree ConsoleExec Arguments /value `[]`
nsJSON::Set /tree ConsoleExec Arguments /value `"arg1"`
nsJSON::Set /tree ConsoleExec Arguments /value `"arg2"`
; Provide input as a single string or an array.
nsJSON::Set /tree ConsoleExec Input /value `"hello"`
; Export the tree to file for debugging.
DetailPrint `Generate: $EXEDIR\Output\AsyncConsoleExecInput.json from ConsoleExec`
nsJSON::Serialize /tree ConsoleExec /format /file $EXEDIR\Output\AsyncConsoleExecInput.json
; Execute the console application.
DetailPrint `Exec: $R0`
nsJSON::Set /tree AsyncConsoleExecOutput /exec ConsoleExec
; Wait until done.
${Do}
Sleep 1000
nsJSON::Wait ConsoleExec /timeout 0
Pop $R0
${If} $R0 != wait
${Break}
${EndIf}
DetailPrint `Waiting...`
${Loop}
DetailPrint `Finished...`
; Save the output to file.
DetailPrint `Generate: $EXEDIR\Output\AsyncConsoleExecOutput.json from AsyncConsoleExecOutput`
nsJSON::Serialize /tree AsyncConsoleExecOutput /format /file $EXEDIR\Output\AsyncConsoleExecOutput.json
SectionEnd
Section /o `.NET Console App` DOTNET
InitPluginsDir
StrCpy $R0 $PLUGINSDIR\ConsoleAppDotNet.exe
File /oname=$R0 Bin\ConsoleAppDotNet.exe
nsJSON::Set /tree ConsoleExec /value `{ "Path": "$R0", "WorkingDir": "$PLUGINSDIR" }`
; Provide arguments as a single string or an array.
nsJSON::Set /tree ConsoleExec Arguments /value `[]`
nsJSON::Set /tree ConsoleExec Arguments /value `"arg1"`
nsJSON::Set /tree ConsoleExec Arguments /value `"arg2"`
; Provide input as a single string or an array.
nsJSON::Set /tree ConsoleExec Input /value `"hello"`
; Export the tree to file for debugging.
DetailPrint `Generate: $EXEDIR\Output\ConsoleExecDotNetInput.json from ConsoleExec`
nsJSON::Serialize /tree ConsoleExec /format /file $EXEDIR\Output\ConsoleExecDotNetInput.json
; Execute the console application.
DetailPrint `Exec: $R0`
nsJSON::Set /tree ConsoleExecOutput /exec ConsoleExec
; Save the output to file.
DetailPrint `Generate: $EXEDIR\Output\ConsoleExecDotNetOutput.json from ConsoleExecOutput`
nsJSON::Serialize /tree ConsoleExecOutput /format /file $EXEDIR\Output\ConsoleExecDotNetOutput.json
SectionEnd
Section /o `UI Thread Console App` UINATIVE
SectionEnd
Function ComponentsPage_Leave
${IfNot} ${SectionIsSelected} ${UINATIVE}
Return
${EndIf}
GetDlgItem $R0 $HWNDPARENT 1
EnableWindow $R0 0
GetDlgItem $R0 $HWNDPARENT 2
EnableWindow $R0 0
GetDlgItem $R0 $HWNDPARENT 3
EnableWindow $R0 0
FindWindow $R0 `#32770` `` $HWNDPARENT
GetDlgItem $R0 $R0 1032
EnableWindow $R0 0
Banner::Show /set 76 `Executing ConsoleApp.exe` `Please wait...`
InitPluginsDir
StrCpy $R0 $PLUGINSDIR\ConsoleApp.exe
File /oname=$R0 Bin\ConsoleApp.exe
nsJSON::Set /tree ConsoleExec /value `{ "UIAsync": true, "Path": "$R0", "WorkingDir": "$PLUGINSDIR", "RawOutput": true }`
; Provide arguments as a single string or an array.
nsJSON::Set /tree ConsoleExec Arguments /value `[]`
nsJSON::Set /tree ConsoleExec Arguments /value `"arg1"`
nsJSON::Set /tree ConsoleExec Arguments /value `"arg2"`
; Provide input as a single string or an array.
nsJSON::Set /tree ConsoleExec Input /value `"hello"`
; Export the tree to file for debugging.
nsJSON::Serialize /tree ConsoleExec /format /file $EXEDIR\Output\UIConsoleExecInput.json
; Execute the console application.
nsJSON::Set /tree UIConsoleExecOutput /exec ConsoleExec
; Save the output to file.
nsJSON::Serialize /tree UIConsoleExecOutput /format /file $EXEDIR\Output\UIConsoleExecOutput.json
Banner::Destroy
GetDlgItem $R0 $HWNDPARENT 1
EnableWindow $R0 1
GetDlgItem $R0 $HWNDPARENT 2
EnableWindow $R0 1
GetDlgItem $R0 $HWNDPARENT 3
EnableWindow $R0 1
FindWindow $R0 `#32770` `` $HWNDPARENT
GetDlgItem $R0 $R0 1032
EnableWindow $R0 1
FunctionEnd
LangString NATIVEDesc ${LANG_ENGLISH} `Executes native console app with STDIN data and reads JSON from STDOUT`
LangString NATIVEASYNCDesc ${LANG_ENGLISH} `Executes native console app asynchronously with STDIN data and reads JSON from STDOUT`
LangString DOTNETDesc ${LANG_ENGLISH} `Executes .NET console app with STDIN data and reads JSON from STDOUT`
LangString UINATIVEDesc ${LANG_ENGLISH} `Executes native console app asynchronously while processing window messages`
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${NATIVE} $(NATIVEDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${NATIVEASYNC} $(NATIVEASYNCDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${DOTNET} $(DOTNETDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${UINATIVE} $(UINATIVEDesc)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
+509
View File
@@ -0,0 +1,509 @@
!include MUI2.nsh
Name `nsJSON plug-in`
OutFile nsJSON_Example.exe
RequestExecutionLevel user
ShowInstDetails show
!define MUI_COMPONENTSPAGE_SMALLDESC
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
Section
CreateDirectory $EXEDIR\Output
SectionEnd
Section /o `Parse Example1.json` EXAMPLE1
; Input: Example1.json; output: Example1.json.
nsJSON::Set /file $EXEDIR\Input\Example1.json
nsJSON::Serialize /format /file $EXEDIR\Output\Example1.json
DetailPrint `Generate: $EXEDIR\Output\Example1.json`
SectionEnd
Section /o `Convert Example1_Unicode.json (no BOM)` EXAMPLE1B
; Use the /unicode switch if the input file is Unicode.
nsJSON::Set /file /unicode $EXEDIR\Input\Example1_Unicode.json
; Generate an ANSII output file.
nsJSON::Serialize /format /file $EXEDIR\Output\Example1B_ASCII.json
DetailPrint `Generate: $EXEDIR\Output\Example1B_ASCII.json`
; Generate a Unicode output file.
nsJSON::Serialize /format /file /unicode $EXEDIR\Output\Example1B_Unicode.json
DetailPrint `Generate: $EXEDIR\Output\Example1B_Unicode.json`
SectionEnd
Section /o `Convert Example1_Unicode_UTF16BE.json (BOM)` EXAMPLE1C
; Use the /unicode switch if the input file is Unicode.
nsJSON::Set /file /unicode $EXEDIR\Input\Example1_Unicode_UTF16BE.json
; Generate an ANSII output file.
nsJSON::Serialize /format /file $EXEDIR\Output\Example1C_ASCII.json
DetailPrint `Generate: $EXEDIR\Output\Example1C_ASCII.json`
; Generate a Unicode output file.
nsJSON::Serialize /format /file /unicode $EXEDIR\Output\Example1C_Unicode.json
DetailPrint `Generate: $EXEDIR\Output\Example1C_Unicode.json`
SectionEnd
Section /o `Convert Example1_Unicode_UTF16LE.json (BOM)` EXAMPLE1D
; Use the /unicode switch if the input file is Unicode.
nsJSON::Set /file /unicode $EXEDIR\Input\Example1_Unicode_UTF16LE.json
; Generate an ANSII output file.
nsJSON::Serialize /format /file $EXEDIR\Output\Example1D_ASCII.json
DetailPrint `Generate: $EXEDIR\Output\Example1D_ASCII.json`
; Generate a Unicode output file.
nsJSON::Serialize /format /file /unicode $EXEDIR\Output\Example1D_Unicode.json
DetailPrint `Generate: $EXEDIR\Output\Example1D_Unicode.json`
SectionEnd
Section /o `Convert Example1_Unicode_UTF8.json (sig)` EXAMPLE1E
; No /unicode switch is used for UTF8.
nsJSON::Set /file $EXEDIR\Input\Example1_Unicode_UTF8.json
; Generate an ANSII output file.
nsJSON::Serialize /format /file $EXEDIR\Output\Example1_ASCII.json
DetailPrint `Generate: $EXEDIR\Output\Example1_ASCII.json`
; Generate a Unicode output file.
nsJSON::Serialize /format /file /unicode $EXEDIR\Output\Example1_Unicode.json
DetailPrint `Generate: $EXEDIR\Output\Example1_Unicode.json`
SectionEnd
Section /o `Parse Example2.json` EXAMPLE2
; Input: Example2.json; output: Example2.json.
nsJSON::Set /file $EXEDIR\Input\Example2.json
nsJSON::Serialize /format /file $EXEDIR\Output\Example2.json
DetailPrint `Generate: $EXEDIR\Output\Example2.json`
SectionEnd
Section /o `Parse Example3.json` EXAMPLE3
; Input: Example3.json; output: Example3.json.
nsJSON::Set /file $EXEDIR\Input\Example3.json
nsJSON::Serialize /format /file $EXEDIR\Output\Example3.json
DetailPrint `Generate: $EXEDIR\Output\Example3.json`
SectionEnd
Section /o `Parse Example4.json` EXAMPLE4
; Input: Example4.json; output: Example4.json.
nsJSON::Set /file $EXEDIR\Input\Example4.json
nsJSON::Serialize /format /file $EXEDIR\Output\Example4.json
DetailPrint `Generate: $EXEDIR\Output\Example4.json`
SectionEnd
Section /o `Parse Example5.json` EXAMPLE5
; Input: Example5.json; output: Example5.json.
nsJSON::Set /file $EXEDIR\Input\Example5.json
nsJSON::Serialize /format /file $EXEDIR\Output\Example5.json
DetailPrint `Generate: $EXEDIR\Output\Example5.json`
SectionEnd
Section /o `Parse Example5.json (via $$R0)` EXAMPLE5B
; Input: Example5.json; output: Example5.json.
nsJSON::Set /file $EXEDIR\Input\Example5.json
nsJSON::Serialize /format
Pop $R0
FileOpen $R1 $EXEDIR\Output\Example5B.json w
FileWrite $R1 $R0
FileClose $R1
DetailPrint `Generate: $EXEDIR\Output\Example5B.json`
SectionEnd
Section /o `Generate Example6.json` EXAMPLE6
nsJSON::Set /value `{}`
nsJSON::Set `html` `head` `title` /value `"Example6"`
; Build an array using individual calls.
nsJSON::Set `html` `body` `h1` /value `[]`
nsJSON::Set `html` `body` `h1` /value `"Hello,\tmy name is"`
nsJSON::Set `html` `body` `h1` `i` /value `"Stuart."`
nsJSON::Set `html` `body` `h1` /value `"Howdy"`
nsJSON::Set `html` `body` `h1` /value `"!"`
nsJSON::Set `html` `body` `h1` /value `[ true, "hello", false ]`
; Build an array using a JSON string.
nsJSON::Set `html` `body` `h2` /value `[ "I like", { "u": { "i" : "programming" } }, "very much!" ]`
; Quotes in node keys are allowed; they are escaped automatically.
nsJSON::Set `html` `body` `a href="http://www.afrowsoft.co.uk"` /value `"My website!"`
; Open the file below in Notepad.
nsJSON::Serialize /format /file $EXEDIR\Output\Example6.json
DetailPrint `Generate: $EXEDIR\Output\Example6.json`
SectionEnd
Section /o `Reading from Example1.json` EXAMPLE7
nsJSON::Set /file $EXEDIR\Input\Example1.json
; Read quoted string value.
ClearErrors
nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossTerm` /end
${IfNot} ${Errors}
Pop $R0
DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossTerm = $R0`
${EndIf}
; Read quoted string value with escaping.
ClearErrors
nsJSON::Set `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `para2` /value `"A meta-markup language, used to create markup languages\r\nsuch as DocBook."`
nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `para2` /end
${IfNot} ${Errors}
Pop $R0
DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->para2 = $R0`
${EndIf}
; Read quoted string value without expanding escape sequences.
ClearErrors
nsJSON::Set `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `para3` /value `"A meta-markup language, used to create markup languages\r\nsuch as DocBook."`
nsJSON::Get /noexpand `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `para3` /end
${IfNot} ${Errors}
Pop $R0
DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->para3 = $R0`
${EndIf}
; Read the value of an array (returns a comma delimited list).
ClearErrors
nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `GlossSeeAlso` /end
${IfNot} ${Errors}
Pop $R0
DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso = $R0`
${EndIf}
; Try reading a node that does not exist.
ClearErrors
nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `GlossSeeAlso2` /end
${IfNot} ${Errors}
Pop $R0
DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso2 = $R0`
${Else}
DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso2 = Does not exist!`
${EndIf}
; Try reading an array element that does not exist.
ClearErrors
nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `GlossSeeAlso` 99 /end
${IfNot} ${Errors}
Pop $R0
DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso->#99 = $R0`
${Else}
DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso->#99 = Does not exist!`
${EndIf}
SectionEnd
Section /o `Arrays test` EXAMPLE8
nsJSON::Set /value `{}`
; You can add an array this way.
nsJSON::Set `array1` /value `[ "value 1", "value 2", { "value 3": "node value" }, "value 4", 5 ]`
; Inspect array1.
nsJSON::Get `array1` /end
Pop $R0
DetailPrint `array1 = [$R0]`
; Or you can build it this way.
nsJSON::Set `array2` /value `[]`
nsJSON::Set `array2` /value `"value 1"`
nsJSON::Set `array2` /value `"value 2"`
nsJSON::Set `array2` `value 3` /value `"node value"`
nsJSON::Set `array2` /value `"value 4"`
nsJSON::Set `array2` /value `5`
; You cannot add the same value again.
nsJSON::Set `array2` /value `5`
; More.
nsJSON::Set `array2` /value `blah1`
nsJSON::Set `array2` /value `blah2`
; Inspect array2.
nsJSON::Get `array2` /end
Pop $R0
DetailPrint `array2 = [$R0]`
; Does an array element exist at the given index?
nsJSON::Get /exists `array2` /index 0 /end
Pop $R0
DetailPrint `array2[0] exists? = $R0`
${If} $R0 == yes
nsJSON::Get `array2` /index 0 /end
Pop $R0
DetailPrint `array2[0] = $R0`
${EndIf}
; Does an array element exist at the given index?
nsJSON::Get /exists `array2` /index -2 /end
Pop $R0
DetailPrint `array2[-2] exists? = $R0`
${If} $R0 == yes
nsJSON::Get `array2` /index -2 /end
Pop $R0
DetailPrint `array2[-2] = $R0`
${EndIf}
; Does an array element exist that matches the value?
nsJSON::Get /exists `array2` `5` /end
Pop $R0
DetailPrint `array2->5 exists? = $R0`
; Does an array element exist at the given index?
nsJSON::Get /exists `array2` /index 6 /end
Pop $R0
DetailPrint `array2[6] exists? = $R0`
; Open Example8_1.json to see what it now looks like.
nsJSON::Serialize /format /file $EXEDIR\Output\Example8_1.json
DetailPrint `Generate: $EXEDIR\Output\Example8_1.json`
; Now delete the element at the given index.
nsJSON::Delete `array1` /index 2 `value 3` /end
DetailPrint `Delete: array1[2]->value 3`
nsJSON::Delete `array2` /index 5 /end
DetailPrint `Delete: array2[5]`
; Now delete the elements with the given values.
nsJSON::Delete `array1` `value 1` /end
DetailPrint `Delete: array1->value 1`
nsJSON::Delete `array2` `value 2` /end
DetailPrint `Delete: array2->value 2`
; Inspect array1.
nsJSON::Get `array1` /end
Pop $R0
DetailPrint `array1 = [$R0]`
; Inspect array2.
nsJSON::Get `array2` /end
Pop $R0
DetailPrint `array2 = [$R0]`
; Open Example8_2.json to see what it now looks like.
nsJSON::Serialize /format /file $EXEDIR\Output\Example8_2.json
DetailPrint `Generate: $EXEDIR\Output\Example8_2.json`
SectionEnd
Section /o `Node iteration test` EXAMPLE9
nsJSON::Set /file $EXEDIR\Input\Example4.json
; Get the node count.
nsJSON::Get /count `web-app` `servlet` /index 0 `init-param` /end
Pop $R0
DetailPrint `Node web-app->servlet[0]->init-param contains $R0 children:`
${For} $R1 0 $R0
nsJSON::Get /key `web-app` `servlet` /index 0 `init-param` /index $R1 /end
Pop $R2
nsJSON::Get `web-app` `servlet` /index 0 `init-param` /index $R1 /end
Pop $R3
nsJSON::Get /type `web-app` `servlet` /index 0 `init-param` /index $R1 /end
Pop $R4
DetailPrint `$R2 = $R3 (type: $R4)`
${Next}
SectionEnd
Section /o `Load Example5.json into Example4.json` EXAMPLE10
; Input: Example5.json; output: Example5.json.
nsJSON::Set /file $EXEDIR\Input\Example5.json
nsJSON::Set `menu` `example4` /file $EXEDIR\Input\Example4.json
nsJSON::Serialize /format /file $EXEDIR\Output\Example10.json
DetailPrint `Generate: $EXEDIR\Output\Example10.json`
SectionEnd
Section /o `Copies Preferences.json into PreferencesNew.json` EXAMPLE11
; Input: Preferences.json; output: PreferencesNew.json.
nsJSON::Set /file $EXEDIR\Input\Preferences.json
nsJSON::Serialize /format /file $EXEDIR\Output\PreferencesNew.json
DetailPrint `Generate: $EXEDIR\Output\PreferencesNew.json`
SectionEnd
Section /o `Copies Preferences2.json into Preferences2New.json` EXAMPLE12
; Input: Preferences2.json; output: Preferences2New.json.
nsJSON::Set /file $EXEDIR\Input\Preferences2.json
nsJSON::Serialize /format /file $EXEDIR\Output\Preferences2New.json
DetailPrint `Generate: $EXEDIR\Output\Preferences2New.json`
SectionEnd
Section /o `Buffer overflow` EXAMPLE13
; Input: Example2.json.
nsJSON::Set /file $EXEDIR\Input\Example2.json
nsJSON::Serialize /format
Pop $R0
StrLen $R1 $R0
DetailPrint `Output length: $R1`
MessageBox MB_OK $R0
SectionEnd
Section /o `Get tests` EXAMPLE14
nsJSON::Set /value `{ "a": "a", "b": 1, "c": {} }`
nsJSON::Serialize /format
Pop $R0
DetailPrint `Test: $R0`
nsJSON::Get /key /index 0 /end
Pop $R0
DetailPrint `Key at index 0: $R0`
nsJSON::Get /keys /end
Pop $R0
DetailPrint `Total keys: $R0`
StrCpy $R1 0
${DoWhile} $R0 > 0
Pop $R2
DetailPrint `Key at index $R1: $R2`
IntOp $R0 $R0 - 1
IntOp $R1 $R1 + 1
${Loop}
nsJSON::Get /type /index 0 /end
Pop $R0
DetailPrint `Type at index 0: $R0`
nsJSON::Get /exists /index 0 /end
Pop $R0
DetailPrint `Index 0 exists?: $R0`
nsJSON::Get /count /end
Pop $R0
DetailPrint `Count: $R0`
nsJSON::Get /isempty /end
Pop $R0
DetailPrint `Is empty?: $R0`
nsJSON::Get /isempty /index 2 /end
Pop $R0
DetailPrint `Is empty at index 2?: $R0`
ClearErrors
nsJSON::Get /isempty /index 99 /end
IfErrors 0 +2
DetailPrint `Is empty at index 99?: Error flag is set`
SectionEnd
Section /o `Delete tests` EXAMPLE15
nsJSON::Set /value `{ "a": "a", "b": 1, "c": {} }`
nsJSON::Serialize /format
Pop $R0
DetailPrint `Test: $R0`
nsJSON::Delete a /end
Pop $R0
DetailPrint `Delete key "a": $R0`
nsJSON::Serialize /format
Pop $R0
DetailPrint `Now: $R0`
ClearErrors
nsJSON::Delete /index 99 /end
IfErrors 0 +2
DetailPrint `Delete at index 99: Error flag is set`
SectionEnd
Section /o `Empty keys` EXAMPLE16
nsJSON::Set /value `{ "": "a", 1, "c": {} }`
nsJSON::Serialize /format
Pop $R0
DetailPrint `Test: $R0`
nsJSON::Set a "" /value `"abc"`
nsJSON::Serialize /format
Pop $R0
DetailPrint `Test: $R0`
SectionEnd
LangString Example1Desc ${LANG_ENGLISH} `Parses Example1.json and then generates Output\Example1.json`
LangString Example1BDesc ${LANG_ENGLISH} `Parses Example1_Unicode.json (no BOM) and then generates Unicode and ASCII copies`
LangString Example1CDesc ${LANG_ENGLISH} `Parses Example1_Unicode_UTF16BE.json (BOM) and then generates Unicode and ASCII copies`
LangString Example1DDesc ${LANG_ENGLISH} `Parses Example1_Unicode_UTF16LE.json (BOM) and then generates Unicode and ASCII copies`
LangString Example1EDesc ${LANG_ENGLISH} `Parses Example1_Unicode_UTF8.json (sig) and then generates Unicode and ASCII copies`
LangString Example2Desc ${LANG_ENGLISH} `Parses Example2.json and then generates Output\Example2.json`
LangString Example3Desc ${LANG_ENGLISH} `Parses Example3.json and then generates Output\Example3.json`
LangString Example4Desc ${LANG_ENGLISH} `Parses Example4.json and then generates Output\Example4.json`
LangString Example5Desc ${LANG_ENGLISH} `Parses Example5.json and then generates Output\Example5.json`
LangString Example5BDesc ${LANG_ENGLISH} `Parses Example5.json and then generates Output\Example5B.json using $$R0`
LangString Example6Desc ${LANG_ENGLISH} `Generates Output\Example6.json using Parse, Set and Serialize`
LangString Example7Desc ${LANG_ENGLISH} `Parses Example1.json and then reads values from the tree using Get`
LangString Example8Desc ${LANG_ENGLISH} `Tests JSON array manipulation while generating Output\Example8.json`
LangString Example9Desc ${LANG_ENGLISH} `Iterates through some nodes in Example4.json by index`
LangString Example10Desc ${LANG_ENGLISH} `Parses Example5.json into Example4.json and then generates Output\Example10.json`
LangString Example11Desc ${LANG_ENGLISH} `Parses Preferences.json and then generates Output\PreferencesNew.json`
LangString Example12Desc ${LANG_ENGLISH} `Parses Preferences2.json and then generates Output\Preferences2New.json`
LangString Example13Desc ${LANG_ENGLISH} `Parses Example2.json (size>NSIS_MAX_STRLEN) and outputs the result.`
LangString Example14Desc ${LANG_ENGLISH} `Simple Get function tests.`
LangString Example15Desc ${LANG_ENGLISH} `Simple Delete function tests.`
LangString Example16Desc ${LANG_ENGLISH} `Empty/missing value keys tests.`
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1} $(Example1Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1B} $(Example1BDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1C} $(Example1CDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1D} $(Example1DDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1E} $(Example1EDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE2} $(Example2Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE3} $(Example3Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE4} $(Example4Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE5} $(Example5Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE5B} $(Example5BDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE6} $(Example6Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE7} $(Example7Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE8} $(Example8Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE9} $(Example9Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE10} $(Example10Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE11} $(Example11Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE12} $(Example12Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE13} $(Example13Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE14} $(Example14Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE15} $(Example15Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE16} $(Example16Desc)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
+127
View File
@@ -0,0 +1,127 @@
!include MUI2.nsh
!define HttpWebRequestURL `http://www.afrowsoft.co.uk/test/HttpWebRequest.php`
Name `nsJSON plug-in`
OutFile nsJSON_HttpWebRequest.exe
RequestExecutionLevel user
ShowInstDetails show
!define MUI_COMPONENTSPAGE_SMALLDESC
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
Section
CreateDirectory $EXEDIR\Output
SectionEnd
Section /o `POST` DATAPOST
StrCpy $R0 `{ "Name": "Jonathan Doe", "Age": 23, "Formula": "a + b == 13%!", "ViewTimes": [ "10:00", "13:43", "21:19", "03:10" ] }`
nsJSON::Set /tree HttpWebRequest /value `{ "Url": "${HttpWebRequestURL}", "Verb": "POST", "Agent": "Mozilla/5.0 (Windows NT 10.0; rv:10.0) Gecko/20100101 Firefox/10.0" }`
DetailPrint `Send: $R0`
DetailPrint `Send to: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebRequest Data /value $R0
nsJSON::Set /tree HttpWebRequest Params /value `{ "a": "string", "b": true, "c": 2 }`
DetailPrint `Generate: $EXEDIR\Output\HttpWebRequest.json from HttpWebRequest`
nsJSON::Serialize /tree HttpWebRequest /format /file $EXEDIR\Output\HttpWebRequest.json
DetailPrint `Download: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebResponse /http HttpWebRequest
DetailPrint `Generate: $EXEDIR\Output\HttpWebResponse.json from HttpWebResponse`
nsJSON::Serialize /tree HttpWebResponse /format /file $EXEDIR\Output\HttpWebResponse.json
SectionEnd
Section /o `Async POST` DATAPOSTASYNC
StrCpy $R0 `{ "Name": "Jonathan Doe", "Age": 23, "Formula": "a + b == 13%!", "ViewTimes": [ "10:00", "13:43", "21:19", "03:10" ] }`
nsJSON::Set /tree HttpWebRequest /value `{ "Url": "${HttpWebRequestURL}", "Verb": "POST", "Async": true }`
DetailPrint `Send: $R0`
DetailPrint `Send to: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebRequest Data /value $R0
nsJSON::Set /tree HttpWebRequest Params /value `{ "a": "string", "b": true, "c": 2 }`
DetailPrint `Generate: $EXEDIR\Output\HttpWebRequest.json from HttpWebRequest`
nsJSON::Serialize /tree HttpWebRequest /format /file $EXEDIR\Output\HttpWebRequest.json
DetailPrint `Download: ${HttpWebRequestURL}`
nsJSON::Set /tree AsyncHttpWebResponse /http HttpWebRequest
; Wait until done.
${Do}
Sleep 1000
nsJSON::Wait HttpWebRequest /timeout 0
Pop $R0
${If} $R0 != wait
${Break}
${EndIf}
DetailPrint `Waiting...`
${Loop}
DetailPrint `Finished...`
DetailPrint `Generate: $EXEDIR\Output\AsyncHttpWebResponse.json from AsyncHttpWebResponse`
nsJSON::Serialize /tree AsyncHttpWebResponse /format /file $EXEDIR\Output\AsyncHttpWebResponse.json
SectionEnd
Section /o `Raw POST` RAWDATAPOST
StrCpy $R0 `Name=Jonathan+Doe&Age=23&Formula=a+%2B+b+%3D%3D+13%25%21&ViewTimes[]=10%3A00&ViewTimes[]=13%3A43&ViewTimes[]=21%3A19&ViewTimes[]=03%3A10`
nsJSON::Set /tree HttpWebRequest /value `{ "Url": "${HttpWebRequestURL}", "Verb": "POST", "DataType": "Raw" }`
DetailPrint `Send: $R0`
DetailPrint `Send to: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebRequest Data /value `"$R0"`
DetailPrint `Generate: $EXEDIR\Output\HttpWebRequest_Raw.json from HttpWebRequest`
nsJSON::Serialize /tree HttpWebRequest /format /file $EXEDIR\Output\HttpWebRequest_Raw.json
DetailPrint `Download: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebResponse /http HttpWebRequest
DetailPrint `Generate: $EXEDIR\Output\HttpWebResponse_Raw.json from HttpWebResponse`
nsJSON::Serialize /tree HttpWebResponse /format /file $EXEDIR\Output\HttpWebResponse_Raw.json
SectionEnd
Section /o `JSON POST` JSONPOST
nsJSON::Set /tree HttpWebRequest /value `{ "Url": "${HttpWebRequestURL}", "Verb": "POST", "DataType": "JSON" }`
DetailPrint `Send: $EXEDIR\Input\Example1.json`
DetailPrint `Send to: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebRequest Data /file $EXEDIR\Input\Example1.json
DetailPrint `Generate: $EXEDIR\Output\HttpWebRequest_JSON.json from HttpWebRequest`
nsJSON::Serialize /tree HttpWebRequest /format /file $EXEDIR\Output\HttpWebRequest_JSON.json
DetailPrint `Download: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebResponse /http HttpWebRequest
DetailPrint `Generate: $EXEDIR\Output\HttpWebResponse_JSON.json from HttpWebResponse`
nsJSON::Serialize /tree HttpWebResponse /format /file $EXEDIR\Output\HttpWebResponse_JSON.json
SectionEnd
LangString DataPOSTDesc ${LANG_ENGLISH} `Sends POST data and parses the JSON response`
LangString DataPOSTAsyncDesc ${LANG_ENGLISH} `Asynchronously sends POST data and parses the JSON response`
LangString RawDataPOSTDesc ${LANG_ENGLISH} `Sends raw POST data and parses the JSON response`
LangString JSONPOSTDesc ${LANG_ENGLISH} `Sends Example1.json and parses the JSON response`
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${DATAPOST} $(DataPOSTDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${DATAPOSTASYNC} $(DataPOSTAsyncDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${RAWDATAPOST} $(RawDataPOSTDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${JSONPOST} $(JSONPOSTDesc)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
+22
View File
@@ -0,0 +1,22 @@
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
+22
View File
@@ -0,0 +1,22 @@
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
+14
View File
@@ -0,0 +1,14 @@
{
"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"},
{"value": "Import", "onclick": "Import('somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_somereallylongvalue_')"}
]
}
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
}
}
+99
View File
@@ -0,0 +1,99 @@
{
"web-app": {
"servlet": [
{
"servlet-name": "cofaxCDS",
"servlet-class": "org.cofax.cds.CDSServlet",
"init-param": {
"configGlossary:installationAt": "Philadelphia, PA",
"configGlossary:adminEmail": "ksm@pobox.com",
"configGlossary:poweredBy": "Cofax",
"configGlossary:poweredByIcon": "/images/cofax.gif",
"configGlossary:staticPath": "/content/static",
"templateProcessorClass": "org.cofax.WysiwygTemplate",
"templateLoaderClass": "org.cofax.FilesTemplateLoader",
"templatePath": "templates",
"templateOverridePath": "",
"defaultListTemplate": "listTemplate.htm",
"defaultFileTemplate": "articleTemplate.htm",
"useJSP": false,
"jspListTemplate": "listTemplate.jsp",
"jspFileTemplate": "articleTemplate.jsp",
"cachePackageTagsTrack": 200,
"cachePackageTagsStore": 200,
"cachePackageTagsRefresh": 60,
"cacheTemplatesTrack": 100,
"cacheTemplatesStore": 50,
"cacheTemplatesRefresh": 15,
"cachePagesTrack": 200,
"cachePagesStore": 100,
"cachePagesRefresh": 10,
"cachePagesDirtyRead": 10,
"searchEngineListTemplate": "forSearchEnginesList.htm",
"searchEngineFileTemplate": "forSearchEngines.htm",
"searchEngineRobotsDb": "WEB-INF/robots.db",
"useDataStore": true,
"dataStoreClass": "org.cofax.SqlDataStore",
"redirectionClass": "org.cofax.SqlRedirection",
"dataStoreName": "cofax",
"dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
"dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
"dataStoreUser": "sa",
"dataStorePassword": "dataStoreTestQuery",
"dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
"dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
"dataStoreInitConns": 10,
"dataStoreMaxConns": 100,
"dataStoreConnUsageLimit": 100,
"dataStoreLogLevel": "debug",
"maxUrlLength": 500
}
},
{
"servlet-name": "cofaxEmail",
"servlet-class": "org.cofax.cds.EmailServlet",
"init-param": {
"mailHost": "mail1",
"mailHostOverride": "mail2"
}
},
{
"servlet-name": "cofaxAdmin",
"servlet-class": "org.cofax.cds.AdminServlet"
},
{
"servlet-name": "fileServlet",
"servlet-class": "org.cofax.cds.FileServlet"
},
{
"servlet-name": "cofaxTools",
"servlet-class": "org.cofax.cms.CofaxToolsServlet",
"init-param": {
"templatePath": "toolstemplates/",
"log": 1,
"logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
"logMaxSize": "",
"dataLog": 1,
"dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
"dataLogMaxSize": "",
"removePageCache": "/content/admin/remove?cache=pages&id=",
"removeTemplateCache": "/content/admin/remove?cache=templates&id=",
"fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
"lookInContext": 1,
"adminGroupID": 4,
"betaServer": true
}
} ],
"servlet-mapping": {
"cofaxCDS": "/",
"cofaxEmail": "/cofaxutil/aemail/*",
"cofaxAdmin": "/admin/*",
"fileServlet": "/static/*",
"cofaxTools": "/tools/*"
},
"taglib": {
"taglib-uri": "cofax.tld",
"taglib-location": "/WEB-INF/tlds/cofax.tld"
}
}
}
+29
View File
@@ -0,0 +1,29 @@
{
"menu": {
"header": "SVG Viewer",
"items": [
{"id": "Open"},
{"id": "OpenNew", "label": "Open New"},
null,
{"id": "ZoomIn", "label": "Zoom In"},
{"id": "ZoomOut", "label": "Zoom Out"},
{"id": "OriginalView", "label": "Original View"},
null,
{"id": "Quality"},
{"id": "Pause"},
{"id": "Mute"},
null,
{"id": "Find", "label": "Find..."},
{"id": "FindAgain", "label": "Find Again"},
{"id": "Copy"},
{"id": "CopyAgain", "label": "Copy Again"},
{"id": "CopySVG", "label": "Copy SVG"},
{"id": "ViewSVG", "label": "View SVG"},
{"id": "ViewSource", "label": "View Source"},
{"id": "SaveAs", "label": "Save As"},
null,
{"id": "Help"},
{"id": "About", "label": "About Adobe CVG Viewer..."}
]
}
}
+992
View File
@@ -0,0 +1,992 @@
{
"apps": {
"shortcuts_have_been_created": true
},
"browser": {
"last_known_google_url": "https://www.google.co.uk/",
"last_prompted_google_url": "https://www.google.co.uk/",
"window_placement": {
"bottom": 1087,
"left": 682,
"maximized": false,
"right": 1627,
"top": 67,
"work_area_bottom": 1040,
"work_area_left": 0,
"work_area_right": 1920,
"work_area_top": 0
}
},
"countryid_at_install": 21843,
"default_apps_install_state": 3,
"default_search_provider": {
"alternate_urls": [ "{google:baseURL}#q={searchTerms}", "{google:baseURL}search#q={searchTerms}", "{google:baseURL}webhp#q={searchTerms}" ],
"enabled": true,
"encodings": "UTF-8",
"icon_url": "http://www.google.com/favicon.ico",
"id": "2",
"image_url": "{google:baseURL}searchbyimage/upload",
"image_url_post_params": "encoded_image={google:imageThumbnail},image_url={google:imageURL},sbisrc={google:imageSearchSource},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight}",
"instant_url": "{google:baseURL}webhp?sourceid=chrome-instant&{google:RLZ}{google:forceInstantResults}{google:instantExtendedEnabledParameter}{google:ntpIsThemedParameter}{google:omniboxStartMarginParameter}ie={inputEncoding}",
"instant_url_post_params": "",
"keyword": "google.co.uk",
"name": "Google",
"new_tab_url": "{google:baseURL}_/chrome/newtab?{google:RLZ}{google:instantExtendedEnabledParameter}{google:ntpIsThemedParameter}ie={inputEncoding}",
"prepopulate_id": "1",
"search_terms_replacement_key": "espv",
"search_url": "{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:bookmarkBarPinned}{google:searchClient}{google:sourceId}{google:instantExtendedEnabledParameter}{google:omniboxStartMarginParameter}ie={inputEncoding}",
"search_url_post_params": "",
"suggest_url": "{google:baseSuggestURL}search?{google:searchFieldtrialParameter}client={google:suggestClient}&gs_ri={google:suggestRid}&xssi=t&q={searchTerms}&{google:cursorPosition}{google:currentPageUrl}{google:pageClassification}sugkey={google:suggestAPIKeyParameter}",
"suggest_url_post_params": ""
},
"extensions": {
"alerts": {
"initialized": true
},
"autoupdate": {
"next_check": "13040578803125671",
"test": "E:\\",
"test2": "E:\\\""
},
"chrome_url_overrides": {
"bookmarks": [ "chrome-extension://eemcgdkfndhakfknompkggombfjjjeno/main.html" ]
},
"known_disabled": [ ],
"last_chrome_version": "33.0.1750.154",
"settings": {
"ahfgeienlihckogmohjhadlkjgocpleb": {
"active_permissions": {
"api": [ "management", "webstorePrivate" ],
"manifest_permissions": [ ]
},
"app_launcher_ordinal": "t",
"content_settings": [ ],
"creation_flags": 1,
"events": [ ],
"from_bookmark": false,
"from_webstore": false,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"install_time": "13040559080062671",
"location": 5,
"manifest": {
"app": {
"launch": {
"web_url": "https://chrome.google.com/webstore"
},
"urls": [ "https://chrome.google.com/webstore" ]
},
"description": "Chrome Web Store",
"icons": {
"128": "webstore_icon_128.png",
"16": "webstore_icon_16.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtl3tO0osjuzRsf6xtD2SKxPlTfuoy7AWoObysitBPvH5fE1NaAA1/2JkPWkVDhdLBWLaIBPYeXbzlHp3y4Vv/4XG+aN5qFE3z+1RU/NqkzVYHtIpVScf3DjTYtKVL66mzVGijSoAIwbFCC3LpGdaoe6Q1rSRDp76wR6jjFzsYwQIDAQAB",
"name": "Store",
"permissions": [ "webstorePrivate", "management" ],
"version": "0.2"
},
"page_ordinal": "n",
"path": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\33.0.1750.154\\resources\\web_store",
"preferences": {
},
"regular_only_preferences": {
},
"was_installed_by_default": false
},
"aohghmighlieiainnegkcijnfilokake": {
"ack_external": true,
"active_permissions": {
"api": [ ],
"manifest_permissions": [ ]
},
"app_launcher_ordinal": "w",
"content_settings": [ ],
"creation_flags": 137,
"events": [ ],
"from_bookmark": false,
"from_webstore": true,
"granted_permissions": {
"api": [ ],
"manifest_permissions": [ ]
},
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"initial_keybindings_set": true,
"install_time": "13040559089376747",
"lastpingday": "13040550028882747",
"location": 1,
"manifest": {
"api_console_project_id": "619683526622",
"app": {
"launch": {
"local_path": "main.html"
}
},
"container": "GOOGLE_DRIVE",
"current_locale": "en_GB",
"default_locale": "en_US",
"description": "Create and edit documents",
"icons": {
"128": "icon_128.png",
"16": "icon_16.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJhLK6fk/BWTEvJhywpk7jDe4A2r0bGXGOLZW4/AdBp3IiD9o9nx4YjLAtv0tIPxi7MvFd/GUUbQBwHT5wQWONJj1z/0Rc2qBkiJA0yqXh42p0snuA8dCfdlhOLsp7/XTMEwAVasjV5hC4awl78eKfJYlZ+8fM/UldLWJ/51iBQwIDAQAB",
"manifest_version": 2,
"name": "Google Docs",
"offline_enabled": true,
"update_url": "http://clients2.google.com/service/update2/crx",
"version": "0.5"
},
"page_ordinal": "n",
"path": "aohghmighlieiainnegkcijnfilokake\\0.5_0",
"preferences": {
},
"regular_only_preferences": {
},
"state": 1,
"was_installed_by_default": true
},
"apdfllckaahabafndbhieahigkjlhalf": {
"ack_external": true,
"active_permissions": {
"api": [ "background", "clipboardRead", "clipboardWrite", "notifications", "unlimitedStorage" ],
"manifest_permissions": [ ]
},
"app_launcher_ordinal": "yn",
"content_settings": [ ],
"creation_flags": 137,
"events": [ ],
"from_bookmark": false,
"from_webstore": true,
"granted_permissions": {
"api": [ "background", "clipboardRead", "clipboardWrite", "notifications", "unlimitedStorage" ],
"manifest_permissions": [ ]
},
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"install_time": "13040559088240747",
"lastpingday": "13040550028882747",
"location": 1,
"manifest": {
"app": {
"launch": {
"web_url": "https://drive.google.com/?usp=chrome_app"
},
"urls": [ "http://docs.google.com/", "http://drive.google.com/", "https://docs.google.com/", "https://drive.google.com/" ]
},
"background": {
"allow_js_access": false
},
"current_locale": "en_GB",
"default_locale": "en_US",
"description": "Google Drive: create, share and keep all your stuff in one place.",
"icons": {
"128": "128.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIl5KlKwL2TSkntkpY3naLLz5jsN0YwjhZyObcTOK6Nda4Ie21KRqZau9lx5SHcLh7pE2/S9OiArb+na2dn7YK5EvH+aRXS1ec3uxVlBhqLdnleVgwgwlg5fH95I52IeHcoeK6pR4hW/Nv39GNlI/Uqk6O6GBCCsAxYrdxww9BiQIDAQAB",
"manifest_version": 2,
"name": "Google Drive",
"offline_enabled": true,
"options_page": "https://drive.google.com/settings",
"permissions": [ "background", "clipboardRead", "clipboardWrite", "notifications", "unlimitedStorage" ],
"update_url": "http://clients2.google.com/service/update2/crx",
"version": "6.3"
},
"page_ordinal": "n",
"path": "apdfllckaahabafndbhieahigkjlhalf\\6.3_0",
"preferences": {
},
"regular_only_preferences": {
},
"state": 1,
"was_installed_by_default": true
},
"blpcfgokakmgnkcojhhkbfbldkacnbeo": {
"ack_external": true,
"active_permissions": {
"api": [ ],
"manifest_permissions": [ ]
},
"app_launcher_ordinal": "x",
"content_settings": [ ],
"creation_flags": 153,
"events": [ ],
"from_bookmark": true,
"from_webstore": true,
"granted_permissions": {
"api": [ ],
"manifest_permissions": [ ]
},
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"install_time": "13040559088955747",
"lastpingday": "13040550028882747",
"location": 1,
"manifest": {
"app": {
"launch": {
"container": "tab",
"web_url": "http://www.youtube.com/?feature=ytca"
},
"web_content": {
"enabled": true,
"origin": "http://www.youtube.com"
}
},
"current_locale": "en_GB",
"default_locale": "en",
"description": "The world's most popular online video community.",
"icons": {
"128": "128.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC/HotmFlyuz5FaHaIbVBhhL4BwbcUtsfWwzgUMpZt5ZsLB2nW/Y5xwNkkPANYGdVsJkT2GPpRRIKBO5QiJ7jPMa3EZtcZHpkygBlQLSjMhdrAKevpKgIl6YTkwzNvExY6rzVDzeE9zqnIs33eppY4S5QcoALMxuSWlMKqgFQjHQIDAQAB",
"manifest_version": 2,
"name": "YouTube",
"permissions": [ "appNotifications" ],
"update_url": "http://clients2.google.com/service/update2/crx",
"version": "4.2.6"
},
"page_ordinal": "n",
"path": "blpcfgokakmgnkcojhhkbfbldkacnbeo\\4.2.6_0",
"preferences": {
},
"regular_only_preferences": {
},
"state": 1,
"was_installed_by_default": true
},
"coobgpohoikkiipiblmjeljniedjpjpf": {
"ack_external": true,
"active_permissions": {
"api": [ ],
"manifest_permissions": [ ]
},
"app_launcher_ordinal": "z",
"content_settings": [ ],
"creation_flags": 153,
"events": [ ],
"from_bookmark": true,
"from_webstore": true,
"granted_permissions": {
"api": [ ],
"manifest_permissions": [ ]
},
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"install_time": "13040559087816747",
"lastpingday": "13040550028882747",
"location": 1,
"manifest": {
"app": {
"launch": {
"web_url": "http://www.google.com/webhp?source=search_app"
},
"urls": [ "*://www.google.com/search", "*://www.google.com/webhp", "*://www.google.com/imgres" ]
},
"current_locale": "en_GB",
"default_locale": "en",
"description": "The fastest way to search the web.",
"icons": {
"128": "128.png",
"16": "16.png",
"32": "32.png",
"48": "48.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIiso3Loy5VJHL40shGhUl6it5ZG55XB9q/2EX6aa88jAxwPutbCgy5d9bm1YmBzLfSgpX4xcpgTU08ydWbd7b50fbkLsqWl1mRhxoqnN01kuNfv9Hbz9dWWYd+O4ZfD3L2XZs0wQqo0y6k64n+qeLkUMd1MIhf6MR8Xz1SOA8pwIDAQAB",
"manifest_version": 2,
"name": "Google Search",
"permissions": [ ],
"update_url": "http://clients2.google.com/service/update2/crx",
"version": "0.0.0.20"
},
"page_ordinal": "n",
"path": "coobgpohoikkiipiblmjeljniedjpjpf\\0.0.0.20_0",
"preferences": {
},
"regular_only_preferences": {
},
"state": 1,
"was_installed_by_default": true
},
"eemcgdkfndhakfknompkggombfjjjeno": {
"active_permissions": {
"api": [ "bookmarks", "bookmarkManagerPrivate", "metricsPrivate", "systemPrivate", "tabs" ],
"explicit_host": [ "chrome://favicon/*", "chrome://resources/*" ],
"manifest_permissions": [ ]
},
"content_settings": [ ],
"creation_flags": 1,
"events": [ ],
"from_bookmark": false,
"from_webstore": false,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"initial_keybindings_set": true,
"install_time": "13040559080062671",
"location": 5,
"manifest": {
"chrome_url_overrides": {
"bookmarks": "main.html"
},
"content_security_policy": "object-src 'none'; script-src chrome://resources 'self'",
"description": "Bookmark Manager",
"icons": {
},
"incognito": "split",
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQcByy+eN9jzazWF/DPn7NW47sW7lgmpk6eKc0BQM18q8hvEM3zNm2n7HkJv/R6fU+X5mtqkDuKvq5skF6qqUF4oEyaleWDFhd1xFwV7JV+/DU7bZ00w2+6gzqsabkerFpoP33ZRIw7OviJenP0c0uWqDWF8EGSyMhB3txqhOtiQIDAQAB",
"manifest_version": 2,
"name": "Bookmark Manager",
"permissions": [ "bookmarks", "bookmarkManagerPrivate", "metricsPrivate", "systemPrivate", "tabs", "chrome://favicon/", "chrome://resources/" ],
"version": "0.1"
},
"path": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\33.0.1750.154\\resources\\bookmark_manager",
"preferences": {
},
"regular_only_preferences": {
},
"was_installed_by_default": false
},
"ennkphjdgehloodpbhlhldgbnhmacadg": {
"active_permissions": {
"api": [ "app.currentWindowInternal", "app.runtime", "app.window" ],
"explicit_host": [ "chrome://settings-frame/*" ],
"manifest_permissions": [ ]
},
"content_settings": [ ],
"creation_flags": 1,
"events": [ "app.runtime.onLaunched" ],
"from_bookmark": false,
"from_webstore": false,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"initial_keybindings_set": true,
"install_time": "13040559080062671",
"location": 5,
"manifest": {
"app": {
"background": {
"scripts": [ "settings_app.js" ]
}
},
"description": "Settings",
"display_in_launcher": false,
"icons": {
"128": "settings_app_icon_128.png",
"16": "settings_app_icon_16.png",
"32": "settings_app_icon_32.png",
"48": "settings_app_icon_48.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDoVDPGX6fvKPVVgc+gnkYlGqHuuapgFDyKhsy4z7UzRLO/95zXPv8h8e5EacqbAQJLUbP6DERH5jowyNEYVxq9GJyntJMwP1ejvoz/52hnY3CCGGCmttmKzzpp5zwLuq3iZf8bslwywfflNUYtaCFSDa0TtrBZz0aOPrAAd/AhNwIDAQAB",
"manifest_version": 2,
"name": "Settings",
"permissions": [ "chrome://settings-frame/" ],
"version": "0.2"
},
"path": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\33.0.1750.154\\resources\\settings_app",
"preferences": {
},
"regular_only_preferences": {
},
"running": false,
"was_installed_by_default": false
},
"gfdkimpbcpahaombhbimeihdjnejgicl": {
"active_permissions": {
"api": [ "app.currentWindowInternal", "app.runtime", "app.window", "feedbackPrivate" ],
"explicit_host": [ "chrome://resources/*" ],
"manifest_permissions": [ ]
},
"content_settings": [ ],
"creation_flags": 1,
"events": [ "feedbackPrivate.onFeedbackRequested" ],
"from_bookmark": false,
"from_webstore": false,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"initial_keybindings_set": true,
"install_time": "13040559080062671",
"location": 5,
"manifest": {
"app": {
"background": {
"scripts": [ "js/event_handler.js" ]
},
"content_security_policy": "default-src 'none'; script-src 'self' chrome://resources; style-src 'unsafe-inline' *; img-src *; media-src 'self'"
},
"description": "User feedback extension",
"display_in_launcher": false,
"display_in_new_tab_page": false,
"icons": {
"32": "images/icon32.png",
"64": "images/icon64.png"
},
"incognito": "split",
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMZElzFX2J1g1nRQ/8S3rg/1CjFyDltWOxQg+9M8aVgNVxbutEWFQz+oQzIP9BB67mJifULgiv12ToFKsae4NpEUR8sPZjiKDIHumc6pUdixOm8SJ5Rs16SMR6+VYxFUjlVW+5CA3IILptmNBxgpfyqoK0qRpBDIhGk1KDEZ4zqQIDAQAB",
"manifest_version": 2,
"name": "Feedback",
"permissions": [ "feedbackPrivate", "chrome://resources/" ],
"version": "1.0"
},
"path": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\33.0.1750.154\\resources\\feedback",
"preferences": {
},
"regular_only_preferences": {
},
"running": false,
"was_installed_by_default": false
},
"mfehgcgbbipciphmccgaenjidiccnmng": {
"active_permissions": {
"api": [ "cloudPrintPrivate" ],
"manifest_permissions": [ ]
},
"content_settings": [ ],
"creation_flags": 1,
"events": [ ],
"from_bookmark": false,
"from_webstore": false,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"install_time": "13040559080062671",
"location": 5,
"manifest": {
"app": {
"launch": {
"web_url": "https://www.google.com/cloudprint"
},
"urls": [ "https://www.google.com/cloudprint/enable_chrome_connector" ]
},
"description": "Cloud Print",
"display_in_launcher": false,
"icons": {
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDqOhnwk4+HXVfGyaNsAQdU/js1Na56diW08oF1MhZiwzSnJsEaeuMN9od9q9N4ZdK3o1xXOSARrYdE+syV7Dl31nf6qz3A6K+D5NHe6sSB9yvYlIiN37jdWdrfxxE0pRYEVYZNTe3bzq3NkcYJlOdt1UPcpJB+isXpAGUKUvt7EQIDAQAB",
"name": "Cloud Print",
"permissions": [ "cloudPrintPrivate" ],
"version": "0.1"
},
"path": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\33.0.1750.154\\resources\\cloud_print",
"preferences": {
},
"regular_only_preferences": {
},
"was_installed_by_default": false
},
"mgndgikekgjfcpckkfioiadnlibdjbkf": {
"active_permissions": {
"api": [ ],
"manifest_permissions": [ ]
},
"app_launcher_ordinal": "n",
"content_settings": [ ],
"creation_flags": 1,
"events": [ ],
"from_bookmark": false,
"from_webstore": false,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"install_time": "13040559080062671",
"location": 5,
"manifest": {
"app": {
"launch": {
"web_url": "http://THIS-WILL-BE-REPLACED"
}
},
"description": "Chrome as an app",
"display_in_launcher": true,
"display_in_new_tab_page": false,
"icons": {
"128": "product_logo_128.png",
"16": "product_logo_16.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNuYLEQ1QPMcc5HfWI/9jiEf6FdJWqEtgRmIeI7qtjPLBM5oje+Ny2E2mTAhou5qdJiO2CHWdU1DQXY2F7Zu2gZaKZgHLfK4WimHxUT5Xd9/aro/R9PCzjguM1BLusiWYc9xlj1IsZpyiN1hcjU7SCnBhv1feQlv2WSB5KRiXwhQIDAQAB",
"name": "Chrome",
"version": "0.1"
},
"page_ordinal": "n",
"path": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\33.0.1750.154\\resources\\chrome_app",
"preferences": {
},
"regular_only_preferences": {
},
"was_installed_by_default": false
},
"neajdppkdcdipfabeoofebfddakdcjhd": {
"active_permissions": {
"api": [ "systemPrivate", "ttsEngine" ],
"explicit_host": [ "https://www.google.com/*" ],
"manifest_permissions": [ ]
},
"content_settings": [ ],
"creation_flags": 1,
"events": [ "ttsEngine.onPause", "ttsEngine.onResume", "ttsEngine.onSpeak", "ttsEngine.onStop" ],
"from_bookmark": false,
"from_webstore": false,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"initial_keybindings_set": true,
"install_time": "13040559080062671",
"location": 5,
"manifest": {
"background": {
"persistent": false,
"scripts": [ "tts_extension.js" ]
},
"description": "Component extension providing speech via the Google network text-to-speech service.",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8GSbNUMGygqQTNDMFGIjZNcwXsHLzkNkHjWbuY37PbNdSDZ4VqlVjzbWqODSe+MjELdv5Keb51IdytnoGYXBMyqKmWpUrg+RnKvQ5ibWr4MW9pyIceOIdp9GrzC1WZGgTmZismYR3AjaIpufZ7xDdQQv+XrghPWCkdVqLN+qZDA1HU+DURznkMICiDDSH2sU0egm9UbWfS218bZqzKeQDiC3OnTPlaxcbJtKUuupIm5knjze3Wo9Ae9poTDMzKgchg0VlFCv3uqox+wlD8sjXBoyBCCK9HpImdVAF1a7jpdgiUHpPeV/26oYzM9/grltwNR3bzECQgSpyXp0eyoegwIDAQAB",
"manifest_version": 2,
"name": "Google Network Speech",
"permissions": [ "systemPrivate", "ttsEngine", "https://www.google.com/" ],
"tts_engine": {
"voices": [ {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "en-US",
"remote": true,
"voice_name": "Google US English"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "male",
"lang": "en-GB",
"remote": true,
"voice_name": "Google UK English Male"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "en-GB",
"remote": true,
"voice_name": "Google UK English Female"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "es-ES",
"remote": true,
"voice_name": "Google Español"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "fr-FR",
"remote": true,
"voice_name": "Google Français"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "it-IT",
"remote": true,
"voice_name": "Google Italiano"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "de-DE",
"remote": true,
"voice_name": "Google Deutsch"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "ja-JP",
"remote": true,
"voice_name": "Google 日本人"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "ko-KR",
"remote": true,
"voice_name": "Google 한국의"
}, {
"event_types": [ "start", "end", "error" ],
"gender": "female",
"lang": "zh-CN",
"remote": true,
"voice_name": "Google 中国的"
} ]
},
"version": "1.0"
},
"path": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\33.0.1750.154\\resources\\network_speech_synthesis",
"preferences": {
},
"regular_only_preferences": {
},
"was_installed_by_default": false
},
"nkeimhogjdpnpccoofpliimaahmaaome": {
"active_permissions": {
"api": [ "alarms", "desktopCapture", "webConnectable", "webrtcAudioPrivate", "webrtcLoggingPrivate", "system.cpu" ],
"manifest_permissions": [ ]
},
"content_settings": [ ],
"creation_flags": 1,
"events": [ "alarms.onAlarm", "runtime.onStartup" ],
"from_bookmark": false,
"from_webstore": false,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"initial_keybindings_set": true,
"install_time": "13040559080062671",
"location": 5,
"manifest": {
"background": {
"page": "background.html",
"persistent": false
},
"externally_connectable": {
"matches": [ "https://*.google.com/hangouts*", "*://localhost/*" ]
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAQt2ZDdPfoSe/JI6ID5bgLHRCnCu9T36aYczmhw/tnv6QZB2I6WnOCMZXJZlRdqWc7w9jo4BWhYS50Vb4weMfh/I0On7VcRwJUgfAxW2cHB+EkmtI1v4v/OU24OqIa1Nmv9uRVeX0GjhQukdLNhAE6ACWooaf5kqKlCeK+1GOkQIDAQAB",
"manifest_version": 2,
"name": "Hangout Services",
"permissions": [ "alarms", "desktopCapture", "system.cpu", "webrtcAudioPrivate", "webrtcLoggingPrivate" ],
"version": "1.0"
},
"path": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\33.0.1750.154\\resources\\hangout_services",
"preferences": {
},
"regular_only_preferences": {
},
"was_installed_by_default": false
},
"nmmhkkegccagdldgiimedpiccmgmieda": {
"ack_external": true,
"active_permissions": {
"api": [ "app.currentWindowInternal", "app.runtime", "app.window", "identity", "webRequestInternal", "webview" ],
"explicit_host": [ "https://checkout.google.com/*", "https://sandbox.google.com/*", "https://www.google.com/*", "https://www.googleapis.com/*" ],
"manifest_permissions": [ ]
},
"content_settings": [ ],
"creation_flags": 137,
"events": [ "app.runtime.onLaunched" ],
"from_bookmark": false,
"from_webstore": true,
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"initial_keybindings_set": true,
"install_time": "13040559086619747",
"lastpingday": "13040550028882747",
"location": 10,
"manifest": {
"app": {
"background": {
"scripts": [ "craw_background.js" ]
}
},
"current_locale": "en_GB",
"default_locale": "en",
"description": "Google Wallet for digital goods",
"display_in_launcher": false,
"display_in_new_tab_page": false,
"icons": {
"128": "images/icon_128.png",
"16": "images/icon_16.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrKfMnLqViEyokd1wk57FxJtW2XXpGXzIHBzv9vQI/01UsuP0IV5/lj0wx7zJ/xcibUgDeIxobvv9XD+zO1MdjMWuqJFcKuSS4Suqkje6u+pMrTSGOSHq1bmBVh0kpToN8YoJs/P/yrRd7FEtAXTaFTGxQL4C385MeXSjaQfiRiQIDAQAB",
"manifest_version": 2,
"minimum_chrome_version": "29",
"name": "Google Wallet",
"oauth2": {
"auto_approve": true,
"client_id": "203784468217.apps.googleusercontent.com",
"scopes": [ "https://www.googleapis.com/auth/sierra", "https://www.googleapis.com/auth/sierrasandbox", "https://www.googleapis.com/auth/chromewebstore", "https://www.googleapis.com/auth/chromewebstore.readonly" ]
},
"permissions": [ "identity", "webview", "https://checkout.google.com/", "https://sandbox.google.com/checkout/", "https://www.google.com/", "https://www.googleapis.com/*" ],
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "0.0.6.1"
},
"path": "nmmhkkegccagdldgiimedpiccmgmieda\\0.0.6.1_0",
"preferences": {
},
"regular_only_preferences": {
},
"running": false,
"state": 1,
"was_installed_by_default": true
},
"pjkljhegncpnkpknbcohdijeoejaedia": {
"ack_external": true,
"active_permissions": {
"api": [ "notifications" ],
"manifest_permissions": [ ]
},
"app_launcher_ordinal": "y",
"content_settings": [ ],
"creation_flags": 137,
"events": [ ],
"from_bookmark": false,
"from_webstore": true,
"granted_permissions": {
"api": [ "notifications" ],
"manifest_permissions": [ ]
},
"incognito_content_settings": [ ],
"incognito_preferences": {
},
"install_time": "13040559088625747",
"lastpingday": "13040550028882747",
"location": 1,
"manifest": {
"app": {
"launch": {
"container": "tab",
"web_url": "https://mail.google.com/mail/ca"
},
"urls": [ "*://mail.google.com/mail/ca" ]
},
"current_locale": "en_GB",
"default_locale": "en",
"description": "Fast, searchable email with less spam.",
"icons": {
"128": "128.png"
},
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCuGglK43iAz3J9BEYK/Mz6ZhloIMMDqQSAaf3vJt4eHbTbSDsu4WdQ9dQDRcKlg8nwQdePBt0C3PSUBtiSNSS37Z3qEGfS7LCju3h6pI1Yr9MQtxw+jUa7kXXIS09VV73pEFUT/F7c6Qe8L5ZxgAcBvXBh1Fie63qb02I9XQ/CQIDAQAB",
"name": "Gmail",
"options_page": "https://mail.google.com/mail/ca/#settings",
"permissions": [ "notifications" ],
"update_url": "http://clients2.google.com/service/update2/crx",
"version": "7"
},
"page_ordinal": "n",
"path": "pjkljhegncpnkpknbcohdijeoejaedia\\7_1",
"preferences": {
},
"regular_only_preferences": {
},
"state": 1,
"was_installed_by_default": true
}
}
},
"google": {
"services": {
"signin": {
"LSID": "",
"SID": ""
}
}
},
"intl": {
"accept_languages": "en-GB,en-US,en"
},
"invalidator": {
"client_id": "XAP6G30QHyob9Zo8hpj1aA=="
},
"media": {
"device_id_salt": "mKmmRGOM8msXbtxkKMl0Hw=="
},
"net": {
"http_server_properties": {
"servers": {
"accounts.google.com:443": {
"alternate_protocol": {
"port": 443,
"protocol_str": "quic"
},
"settings": {
"4": 100
},
"supports_spdy": true
},
"accounts.youtube.com:443": {
"settings": {
"4": 100
},
"supports_spdy": true
},
"apis.google.com:443": {
"settings": {
"4": 100
},
"supports_spdy": true
},
"clients2.google.com:443": {
"settings": {
"4": 100
},
"supports_spdy": true
},
"clients2.googleusercontent.com:443": {
"alternate_protocol": {
"port": 443,
"protocol_str": "quic"
},
"settings": {
"4": 100
},
"supports_spdy": true
},
"developer.android.com:443": {
"settings": {
"4": 100
},
"supports_spdy": true
},
"fonts.googleapis.com:443": {
"alternate_protocol": {
"port": 443,
"protocol_str": "quic"
},
"settings": {
"4": 100
},
"supports_spdy": true
},
"oauth.googleusercontent.com:443": {
"alternate_protocol": {
"port": 443,
"protocol_str": "quic"
},
"supports_spdy": false
},
"s.ytimg.com:443": {
"settings": {
"4": 100
},
"supports_spdy": true
},
"ssl.google-analytics.com:443": {
"alternate_protocol": {
"port": 443,
"protocol_str": "quic"
},
"settings": {
"4": 100
},
"supports_spdy": true
},
"ssl.gstatic.com:443": {
"alternate_protocol": {
"port": 443,
"protocol_str": "quic"
},
"settings": {
"4": 100
},
"supports_spdy": true
},
"themes.googleusercontent.com:443": {
"alternate_protocol": {
"port": 443,
"protocol_str": "quic"
},
"settings": {
"4": 100
},
"supports_spdy": true
},
"tools.google.com:80": {
"alternate_protocol": {
"port": 80,
"protocol_str": "quic"
},
"supports_spdy": false
},
"www.google.com:443": {
"alternate_protocol": {
"port": 443,
"protocol_str": "quic"
},
"settings": {
"4": 100
},
"supports_spdy": true
},
"www.youtube.com:443": {
"settings": {
"4": 100
},
"supports_spdy": true
}
},
"version": 2
}
},
"plugins": {
"migrated_to_pepper_flash": true,
"plugins_list": [ ],
"removed_old_component_pepper_flash_settings": true
},
"profile": {
"avatar_index": 0,
"content_settings": {
"clear_on_exit_migrated": true,
"pattern_pairs": {
},
"pref_version": 1
},
"created_by_version": "33.0.1750.154",
"exit_type": "Crashed",
"exited_cleanly": true,
"icon_version": 2,
"managed_user_id": "",
"name": "First user"
},
"session": {
"restore_on_startup_migrated": true,
"startup_urls_migration_time": "13040559080052671"
},
"sync_promo": {
"startup_count": 1
},
"translate_blocked_languages": [ "en" ],
"translate_whitelists": {
}
}
File diff suppressed because one or more lines are too long
+26
View File
@@ -0,0 +1,26 @@
!include MUI2.nsh
Name `nsJSON plug-in`
OutFile nsJSON_MultiTree.exe
RequestExecutionLevel user
ShowInstDetails show
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
Section
CreateDirectory $EXEDIR\Output
DetailPrint `Read: $EXEDIR\Input\Example1.json into Example1`
nsJSON::Set /tree Example1 /file $EXEDIR\Input\Example1.json
DetailPrint `Read: $EXEDIR\Input\Example2.json into Example2`
nsJSON::Set /tree Example2 /file $EXEDIR\Input\Example2.json
DetailPrint `Generate: $EXEDIR\Output\Example2.json from Example2`
nsJSON::Serialize /tree Example2 /format /file $EXEDIR\Output\Example2.json
DetailPrint `Generate: $EXEDIR\Output\Example1.json from Example1`
nsJSON::Serialize /tree Example1 /format /file $EXEDIR\Output\Example1.json
SectionEnd
+46
View File
@@ -0,0 +1,46 @@
!include MUI2.nsh
Name `nsJSON plug-in`
OutFile nsJSON_Quote.exe
RequestExecutionLevel user
ShowInstDetails show
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
!macro nJSON_Quote_Test Unicode Always Input
!if `${Always}` == true
nsJSON::Quote /always `${Input}`
!else if `${Unicode}` == true
nsJSON::Quote /unicode `${Input}`
!else
nsJSON::Quote `${Input}`
!endif
Pop $R0
!if `${Always}` == true
DetailPrint `${Input} -> $R0 (/always)`
!else if `${Unicode}` == true
DetailPrint `${Input} -> $R0 (/unicode)`
!else
DetailPrint `${Input} -> $R0`
!endif
!macroend
!define nJSON_Quote_Test `!insertmacro nJSON_Quote_Test false false`
!define nJSON_Quote_Test_Unicode `!insertmacro nJSON_Quote_Test true false`
!define nJSON_Quote_Test_Always `!insertmacro nJSON_Quote_Test false true`
Section
${nJSON_Quote_Test} `"`
${nJSON_Quote_Test} `\`
${nJSON_Quote_Test} `£`
${nJSON_Quote_Test} `¡`
${nJSON_Quote_Test} `"¡"`
${nJSON_Quote_Test} `"some"text"`
${nJSON_Quote_Test_Always} `"some"text"`
${nJSON_Quote_Test_Unicode} `£`
${nJSON_Quote_Test_Unicode} `¡`
${nJSON_Quote_Test_Unicode} `"¡"`
SectionEnd
+36
View File
@@ -0,0 +1,36 @@
!include MUI2.nsh
Name `nsJSON plug-in`
OutFile nsJSON_Sort.exe
RequestExecutionLevel user
ShowInstDetails show
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
!macro nJSON_Sort_Test Options
nsJSON::Sort /options ${Options} /end
nsJSON::Get /end
Pop $R0
DetailPrint $R0
!macroend
!define nJSON_Sort_Test `!insertmacro nJSON_Sort_Test`
Section
nsJSON::Set /value `{ "D": "X", "b": 3, "a": 22, "c" : 2, "d": "x", "y": { "f": 33, "a": 9, "n": [ 1, 5, -10, 11, "m" ] } }` /end
DetailPrint `Sorted root node values only`
${nJSON_Sort_Test} 0
DetailPrint `Sorted root node values only numerically`
${nJSON_Sort_Test} 2
DetailPrint `Sorted root node by keys only`
${nJSON_Sort_Test} 8
DetailPrint `Sorted values numerically + recursively`
${nJSON_Sort_Test} 18
SectionEnd
+35
View File
@@ -0,0 +1,35 @@
!include MUI2.nsh
Name `nsJSON plug-in`
OutFile nsJSON_Syntax.exe
RequestExecutionLevel user
ShowInstDetails show
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
!macro DoTest JSON Description
StrCpy $R0 ``
ClearErrors
nsJSON::Set /value `${JSON}`
nsJSON::Serialize
Pop $R0
DetailPrint `${Description}:`
DetailPrint `${JSON} -> $R0`
IfErrors 0 +2
DetailPrint `Error flag is set!`
DetailPrint ``
!macroend
Section
!insertmacro DoTest `{ "Input": [ { "test1": false, } ] }` `Trailing comma`
!insertmacro DoTest `{ "Input": [ { "test1": false } .? ] }` `Junk characters`
!insertmacro DoTest `{ "Input": [ { "test1": false } }` `Missing square bracket`
!insertmacro DoTest `{ "Input": [ { "test1": false ] }` `Missing curly brace`
SectionEnd
+25
View File
@@ -0,0 +1,25 @@
!include MUI2.nsh
Name `nsJSON plug-in`
OutFile nsJSON_UnicodeNSIS.exe
RequestExecutionLevel user
ShowInstDetails show
Unicode true
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
Section
nsJSON::Set /tree testTree testNode /value testValue
nsJSON::Get /tree testTree testNode /end
Pop $R0
DetailPrint $R0
nsJSON::Serialize /tree testTree
Pop $R0
DetailPrint $R0
SectionEnd