Browse files

changed the JSON objective code to be less strict and use a dynlib

  • Loading branch information...
1 parent 5182d9a commit 2bd0b072c08ff59ceecdda10a0b6e63fda2df29d @mattetti committed Jan 23, 2009
View
5 core_ext/array.rb
@@ -1,9 +1,6 @@
class Array
def to_json(*args)
return self if self.empty?
- errorp = Pointer.new_with_type('@')
- obj = JSON.sbjson.stringWithFragment(self, error:errorp)
- raise errorp[0].description if errorp[0]
- obj
+ self.toJson
end
end
View
2 core_ext/enumerable.rb
@@ -1,5 +1,5 @@
module Enumerable
def to_json(*a)
- to_a.to_json(*a)
+ self.is_a?(Hash) ? self.jsonStringValue : to_a.to_json(*a)
end
end
View
6 core_ext/hash.rb
@@ -1,8 +1,6 @@
class Hash
def to_json(*args)
- errorp = Pointer.new_with_type('@')
- obj = JSON.sbjson.stringWithFragment(self, error:errorp)
- raise errorp[0].description if errorp[0]
- obj
+ p "Hash to_json"
+ self.jsonStringValue
end
end
View
92 json.rb
@@ -1,5 +1,8 @@
-# Uses the objc JSON framework http://code.brautaset.org/JSON/
-framework "JSON"
+# Check the ObjC source code available in src
+# if you modify the source code, you will need to rebuild
+# the dynlib and rename it BSJON.bundle
+require File.join(File.dirname(__FILE__), 'lib', 'BSJSON')
+
ext_path = File.join(File.dirname(__FILE__), "core_ext")
require File.join(ext_path, 'array')
require File.join(ext_path, 'object')
@@ -26,15 +29,6 @@ class NestingError < ParserError; end
# This exception is raised, if a generator or unparser error occurs.
class GeneratorError < JSONError; end
- # Returns an instance of SBJSON
- # SBJSON is framework implementing a strict JSON parser and generator in Objective-C.
- #
- # http://code.google.com/p/json-framework/
- #
- def self.sbjson
- @sbjson ||= SBJSON.new
- end
-
# Load a ruby data structure from a JSON _source_ and return it. A source can
# either be a string-like object, an IO like object, or an object responding
# to the read method. If _proc_ was given, it will be called with any nested
@@ -58,21 +52,25 @@ def self.load(source, proc = nil)
source = source.to_io.read
else
source = source.read
- end
- errorp = Pointer.new_with_type('@')
- result = JSON.sbjson.objectWithString(source, error:errorp)
- raise (JSON::ParserError, errorp[0].description) if errorp[0]
- recurse_proc(result, &proc) if proc
- ## TEMP LIMITED HACK
- if result.is_a?(Array)
- result.map do |obj|
- obj_d, obj_l = obj.doubleValue, obj.longValue
- obj_d == obj_l ? obj_l : obj_d
- end
+ end
+
+ begin
+ result = Hash.dictionaryWithJSONString(source)
+ rescue => e
+ raise ParserError, e
else
- result
- end
+ recurse_proc(result, &proc) if proc
+ ## TEMP LIMITED HACK
+ if result.is_a?(Array)
+ result.map do |obj|
+ obj_d, obj_l = obj.doubleValue, obj.longValue
+ obj_d == obj_l ? obj_l : obj_d
+ end
+ else
+ result
+ end
##
+ end
end
@@ -100,48 +98,15 @@ def recurse_proc(result, &proc)
# :api: public
#
def self.dump(obj, anIO = nil, limit = nil)
- errorp = Pointer.new_with_type('@')
- json = sbjson.stringWithFragment(obj, error:errorp)
- raise errorp[0].description if errorp[0]
- json
+ begin
+ obj.to_json
+ rescue => e
+ raise GeneratorError, e
+ end
end
- # Unparse the Ruby data structure _obj_ into a single line JSON string and
- # return it. _state_ is
- # * a JSON::State object,
- # * or a Hash like object (responding to to_hash),
- # * an object convertible into a hash by a to_h method,
- # that is used as or to configure a State object.
- #
- # It defaults to a state object, that creates the shortest possible JSON text
- # in one line, checks for circular data structures and doesn't allow NaN,
- # Infinity, and -Infinity.
- #
- # A _state_ hash can have the following keys:
- # * *indent*: a string used to indent levels (default: ''),
- # * *space*: a string that is put after, a : or , delimiter (default: ''),
- # * *space_before*: a string that is put before a : pair delimiter (default: ''),
- # * *object_nl*: a string that is put at the end of a JSON object (default: ''),
- # * *array_nl*: a string that is put at the end of a JSON array (default: ''),
- # * *check_circular*: true if checking for circular data structures
- # should be done (the default), false otherwise.
- # * *allow_nan*: true if NaN, Infinity, and -Infinity should be
- # generated, otherwise an exception is thrown, if these values are
- # encountered. This options defaults to false.
- # * *max_nesting*: The maximum depth of nesting allowed in the data
- # structures from which JSON is to be generated. Disable depth checking
- # with :max_nesting => false, it defaults to 19.
- #
- # See also the fast_generate for the fastest creation method with the least
- # amount of sanity checks, and the pretty_generate method for some
- # defaults for a pretty output.
def self.generate(obj, state = nil)
- if state
- p "State not implemented yet"
- # state = State.from_state(state)
- else
- # state = State.new
- end
+ puts "State not implemented yet" if state
obj.to_json(state)
end
@@ -159,6 +124,7 @@ def self.generate(obj, state = nil)
# additions even if a matchin class and create_id was found. This option
# defaults to true.
def self.parse(source, opts = {})
+ p "Options not supported yet" unless opts.empty?
JSON.load(source)
end
View
BIN lib/BSJSON.bundle
Binary file not shown.
View
120 src/BSJSON/BSJSON.xcodeproj/mattetti.mode1v3
@@ -277,11 +277,13 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
+ <integer>2</integer>
+ <integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {278, 338}}</string>
+ <string>{{0, 0}, {278, 377}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -293,14 +295,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {295, 356}}</string>
+ <string>{{0, 0}, {295, 395}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>278</real>
</array>
<key>RubberWindowFrame</key>
- <string>61 321 690 397 0 0 1280 778 </string>
+ <string>147 260 1124 436 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -316,15 +318,79 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>MyNewFile14.java</string>
+ <string>NSMutableDictionary+BSJSONAdditions.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>MyNewFile14.java</string>
+ <string>NSMutableDictionary+BSJSONAdditions.h</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>2BAB79A20F2AC8E000A1588A</string>
+ <key>history</key>
+ <array>
+ <string>2BAB79720F2AC8E000A1588A</string>
+ <string>2BAB79730F2AC8E000A1588A</string>
+ <string>2BAB79740F2AC8E000A1588A</string>
+ <string>2BAB79750F2AC8E000A1588A</string>
+ <string>2BAB79760F2AC8E000A1588A</string>
+ <string>2BAB79770F2AC8E000A1588A</string>
+ </array>
+ <key>prevStack</key>
+ <array>
+ <string>2B823B0C0F2578EF007AE24B</string>
+ <string>2B823B0D0F2578EF007AE24B</string>
+ <string>2B823B0E0F2578EF007AE24B</string>
+ <string>2B823B0F0F2578EF007AE24B</string>
+ <string>2B823B100F2578EF007AE24B</string>
+ <string>2B823B130F2578EF007AE24B</string>
+ <string>2BAB79780F2AC8E000A1588A</string>
+ <string>2BAB79790F2AC8E000A1588A</string>
+ <string>2BAB797A0F2AC8E000A1588A</string>
+ <string>2BAB797B0F2AC8E000A1588A</string>
+ <string>2BAB797C0F2AC8E000A1588A</string>
+ <string>2BAB797D0F2AC8E000A1588A</string>
+ <string>2BAB797E0F2AC8E000A1588A</string>
+ <string>2BAB797F0F2AC8E000A1588A</string>
+ <string>2BAB79800F2AC8E000A1588A</string>
+ <string>2BAB79810F2AC8E000A1588A</string>
+ <string>2BAB79820F2AC8E000A1588A</string>
+ <string>2BAB79830F2AC8E000A1588A</string>
+ <string>2BAB79840F2AC8E000A1588A</string>
+ <string>2BAB79850F2AC8E000A1588A</string>
+ <string>2BAB79860F2AC8E000A1588A</string>
+ <string>2BAB79870F2AC8E000A1588A</string>
+ <string>2BAB79880F2AC8E000A1588A</string>
+ <string>2BAB79890F2AC8E000A1588A</string>
+ <string>2BAB798A0F2AC8E000A1588A</string>
+ <string>2BAB798B0F2AC8E000A1588A</string>
+ <string>2BAB798C0F2AC8E000A1588A</string>
+ <string>2BAB798D0F2AC8E000A1588A</string>
+ <string>2BAB798E0F2AC8E000A1588A</string>
+ <string>2BAB798F0F2AC8E000A1588A</string>
+ <string>2BAB79900F2AC8E000A1588A</string>
+ <string>2BAB79910F2AC8E000A1588A</string>
+ <string>2BAB79920F2AC8E000A1588A</string>
+ <string>2BAB79930F2AC8E000A1588A</string>
+ <string>2BAB79940F2AC8E000A1588A</string>
+ <string>2BAB79950F2AC8E000A1588A</string>
+ <string>2BAB79960F2AC8E000A1588A</string>
+ <string>2BAB79970F2AC8E000A1588A</string>
+ <string>2BAB79980F2AC8E000A1588A</string>
+ <string>2BAB79990F2AC8E000A1588A</string>
+ <string>2BAB799A0F2AC8E000A1588A</string>
+ <string>2BAB799B0F2AC8E000A1588A</string>
+ <string>2BAB799C0F2AC8E000A1588A</string>
+ <string>2BAB799D0F2AC8E000A1588A</string>
+ <string>2BAB799E0F2AC8E000A1588A</string>
+ <string>2BAB799F0F2AC8E000A1588A</string>
+ <string>2BAB79A00F2AC8E000A1588A</string>
+ <string>2BAB79A10F2AC8E000A1588A</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -335,14 +401,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {390, 0}}</string>
+ <string>{{0, 0}, {824, 299}}</string>
<key>RubberWindowFrame</key>
- <string>61 321 690 397 0 0 1280 778 </string>
+ <string>147 260 1124 436 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>299pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
@@ -355,18 +421,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 5}, {390, 351}}</string>
+ <string>{{0, 304}, {824, 91}}</string>
<key>RubberWindowFrame</key>
- <string>61 321 690 397 0 0 1280 778 </string>
+ <string>147 260 1124 436 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
<key>Proportion</key>
- <string>351pt</string>
+ <string>91pt</string>
</dict>
</array>
<key>Proportion</key>
- <string>390pt</string>
+ <string>824pt</string>
</dict>
</array>
<key>Name</key>
@@ -381,9 +447,9 @@
</array>
<key>TableOfContents</key>
<array>
- <string>2BC0D2280F19B78A0011E45A</string>
+ <string>2BAB79A30F2AC8E000A1588A</string>
<string>1CE0B1FE06471DED0097A5F4</string>
- <string>2BC0D2290F19B78A0011E45A</string>
+ <string>2BAB79A40F2AC8E000A1588A</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@@ -496,7 +562,7 @@
<key>PerspectivesBarVisible</key>
<false/>
<key>PinnedNavigatorIdentifier</key>
- <string>2BC0D22C0F19B8D40011E45A</string>
+ <string>2B823B050F23B994007AE24B</string>
<key>ShelfIsVisible</key>
<false/>
<key>SourceDescription</key>
@@ -520,10 +586,10 @@
<key>WindowOrderList</key>
<array>
<string>2BC0D21B0F19B6B10011E45A</string>
- <string>/Users/mattetti/cocoa/BSJSON/BSJSON.xcodeproj</string>
+ <string>/Users/mattetti/Code/macruby/json/src/BSJSON/BSJSON.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>61 321 690 397 0 0 1280 778 </string>
+ <string>147 260 1124 436 0 0 1280 778 </string>
<key>WindowToolsV3</key>
<array>
<dict>
@@ -539,28 +605,26 @@
<key>Dock</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
- <string>NSDictionary+BSJSONAdditions.h</string>
+ <string></string>
<key>StatusBarVisibility</key>
<true/>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {500, 218}}</string>
+ <string>{{0, 0}, {690, 199}}</string>
<key>RubberWindowFrame</key>
- <string>578 227 500 500 0 0 1280 778 </string>
+ <string>578 246 690 481 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>218pt</string>
+ <string>199pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
@@ -577,9 +641,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 223}, {500, 236}}</string>
+ <string>{{0, 204}, {690, 236}}</string>
<key>RubberWindowFrame</key>
- <string>578 227 500 500 0 0 1280 778 </string>
+ <string>578 246 690 481 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -588,7 +652,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>459pt</string>
+ <string>440pt</string>
</dict>
</array>
<key>Name</key>
@@ -602,14 +666,14 @@
<key>TableOfContents</key>
<array>
<string>2BC0D21B0F19B6B10011E45A</string>
- <string>2BC0D21C0F19B6B10011E45A</string>
+ <string>2BAB79A50F2AC8E000A1588A</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.buildV3</string>
<key>WindowString</key>
- <string>578 227 500 500 0 0 1280 778 </string>
+ <string>578 246 690 481 0 0 1280 778 </string>
<key>WindowToolGUID</key>
<string>2BC0D21B0F19B6B10011E45A</string>
<key>WindowToolIsVisible</key>
View
1,220 src/BSJSON/BSJSON.xcodeproj/mattetti.pbxuser
@@ -7,16 +7,19 @@
addToTargets = (
D2AAC0C605546C1D00DB518D /* BSJSON */,
);
+ breakpoints = (
+ 2BAB796E0F2AAE6400A1588A /* NSMutableArray+BSJSONAdditions.m:37 */,
+ );
codeSenseManager = 2BC0D1EC0F19B3420011E45A /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 151,
+ 585,
20,
- 48.16259765625,
+ 48,
43,
43,
20,
@@ -31,14 +34,1180 @@
PBXFileDataSource_Target_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 253342499;
- PBXWorkspaceStateSaveDate = 253342499;
+ PBXPerProjectTemplateStateSaveDate = 254454695;
+ PBXWorkspaceStateSaveDate = 254454695;
+ };
+ perUserProjectItems = {
+ 2B823B060F2578EF007AE24B = 2B823B060F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B070F2578EF007AE24B = 2B823B070F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B080F2578EF007AE24B = 2B823B080F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B090F2578EF007AE24B = 2B823B090F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B0A0F2578EF007AE24B = 2B823B0A0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B0B0F2578EF007AE24B = 2B823B0B0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B0C0F2578EF007AE24B = 2B823B0C0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B0D0F2578EF007AE24B = 2B823B0D0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B0E0F2578EF007AE24B = 2B823B0E0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B0F0F2578EF007AE24B = 2B823B0F0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B100F2578EF007AE24B = 2B823B100F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B110F2578EF007AE24B = 2B823B110F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B120F2578EF007AE24B = 2B823B120F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B130F2578EF007AE24B = 2B823B130F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B140F2578EF007AE24B = 2B823B140F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B150F2578EF007AE24B = 2B823B150F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B160F2578EF007AE24B = 2B823B160F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B170F2578EF007AE24B = 2B823B170F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B180F2578EF007AE24B = 2B823B180F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B190F2578EF007AE24B = 2B823B190F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B1A0F2578EF007AE24B = 2B823B1A0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B1B0F2578EF007AE24B = 2B823B1B0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B1C0F2578EF007AE24B = 2B823B1C0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B1D0F2578EF007AE24B = 2B823B1D0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B1E0F2578EF007AE24B = 2B823B1E0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B1F0F2578EF007AE24B = 2B823B1F0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B200F2578EF007AE24B = 2B823B200F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B210F2578EF007AE24B = 2B823B210F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B220F2578EF007AE24B = 2B823B220F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B230F2578EF007AE24B = 2B823B230F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B240F2578EF007AE24B = 2B823B240F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B250F2578EF007AE24B = 2B823B250F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B260F2578EF007AE24B = 2B823B260F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B270F2578EF007AE24B = 2B823B270F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B280F2578EF007AE24B = 2B823B280F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B290F2578EF007AE24B = 2B823B290F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B2A0F2578EF007AE24B = 2B823B2A0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B2B0F2578EF007AE24B = 2B823B2B0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B2C0F2578EF007AE24B = 2B823B2C0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B2D0F2578EF007AE24B = 2B823B2D0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B2E0F2578EF007AE24B = 2B823B2E0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B2F0F2578EF007AE24B = 2B823B2F0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B300F2578EF007AE24B = 2B823B300F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B310F2578EF007AE24B = 2B823B310F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B320F2578EF007AE24B = 2B823B320F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B330F2578EF007AE24B = 2B823B330F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B340F2578EF007AE24B = 2B823B340F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B350F2578EF007AE24B = 2B823B350F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B360F2578EF007AE24B = 2B823B360F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B370F2578EF007AE24B = 2B823B370F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B380F2578EF007AE24B = 2B823B380F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B390F2578EF007AE24B = 2B823B390F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B3A0F2578EF007AE24B = 2B823B3A0F2578EF007AE24B /* PBXTextBookmark */;
+ 2B823B3B0F2578EF007AE24B = 2B823B3B0F2578EF007AE24B /* PBXTextBookmark */;
+ 2BAB79720F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79720F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79730F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79730F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79740F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79740F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79750F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79750F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79760F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79760F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79770F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79770F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79780F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79780F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79790F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79790F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB797A0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797A0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB797B0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797B0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB797C0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797C0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB797D0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797D0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB797E0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797E0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB797F0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797F0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79800F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79800F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79810F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79810F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79820F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79820F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79830F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79830F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79840F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79840F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79850F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79850F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79860F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79860F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79870F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79870F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79880F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79880F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79890F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79890F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB798A0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798A0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB798B0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798B0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB798C0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798C0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB798D0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798D0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB798E0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798E0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB798F0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798F0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79900F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79900F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79910F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79910F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79920F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79920F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79930F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79930F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79940F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79940F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79950F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79950F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79960F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79960F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79970F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79970F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79980F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79980F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79990F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79990F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB799A0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799A0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB799B0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799B0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB799C0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799C0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB799D0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799D0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB799E0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799E0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB799F0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799F0F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79A00F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79A00F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79A10F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79A10F2AC8E000A1588A /* PBXTextBookmark */;
+ 2BAB79A20F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79A20F2AC8E000A1588A /* PBXTextBookmark */;
};
sourceControlManager = 2BC0D1EB0F19B3420011E45A /* Source Control */;
userBuildSettings = {
- SYMROOT = /Users/mattetti/Code/macruby/json/lib;
};
};
+ 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {763, 267}}";
+ sepNavSelRange = "{292, 0}";
+ sepNavVisRange = "{0, 304}";
+ sepNavWindowFrame = "{{78, 194}, {750, 558}}";
+ };
+ };
+ 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {848, 810}}";
+ sepNavSelRange = "{835, 0}";
+ sepNavVisRange = "{255, 915}";
+ sepNavWindowFrame = "{{55, 215}, {750, 558}}";
+ };
+ };
+ 2B823B060F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 25";
+ rLen = 37;
+ rLoc = 937;
+ rType = 0;
+ vrLen = 883;
+ vrLoc = 767;
+ };
+ 2B823B070F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 26";
+ rLen = 0;
+ rLoc = 1395;
+ rType = 0;
+ vrLen = 679;
+ vrLoc = 206;
+ };
+ 2B823B080F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2B823B090F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B0A0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 1074;
+ vrLoc = 891;
+ };
+ 2B823B0B0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 36";
+ rLen = 49;
+ rLoc = 1430;
+ rType = 0;
+ vrLen = 1254;
+ vrLoc = 703;
+ };
+ 2B823B0C0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1560;
+ vrLoc = 376;
+ };
+ 2B823B0D0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 112";
+ rLen = 610;
+ rLoc = 4499;
+ rType = 0;
+ vrLen = 365;
+ vrLoc = 4478;
+ };
+ 2B823B0E0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1160;
+ vrLoc = 703;
+ };
+ 2B823B0F0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 34";
+ rLen = 0;
+ rLoc = 1165;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B100F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 8";
+ rLen = 0;
+ rLoc = 161;
+ rType = 0;
+ vrLen = 252;
+ vrLoc = 0;
+ };
+ 2B823B110F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1364;
+ vrLoc = 376;
+ };
+ 2B823B120F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 8";
+ rLen = 0;
+ rLoc = 161;
+ rType = 0;
+ vrLen = 252;
+ vrLoc = 0;
+ };
+ 2B823B130F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 257;
+ vrLoc = 0;
+ };
+ 2B823B140F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 8";
+ rLen = 0;
+ rLoc = 161;
+ rType = 0;
+ vrLen = 252;
+ vrLoc = 0;
+ };
+ 2B823B150F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 6";
+ rLen = 0;
+ rLoc = 135;
+ rType = 0;
+ vrLen = 816;
+ vrLoc = 40;
+ };
+ 2B823B160F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1128;
+ vrLoc = 703;
+ };
+ 2B823B170F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B180F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 14";
+ rLen = 6;
+ rLoc = 895;
+ rType = 0;
+ vrLen = 853;
+ vrLoc = 3;
+ };
+ 2B823B190F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 112";
+ rLen = 610;
+ rLoc = 4499;
+ rType = 0;
+ vrLen = 1131;
+ vrLoc = 4173;
+ };
+ 2B823B1A0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B1B0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 43";
+ rLen = 0;
+ rLoc = 1482;
+ rType = 0;
+ vrLen = 980;
+ vrLoc = 4481;
+ };
+ 2B823B1C0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 8";
+ rLen = 0;
+ rLoc = 161;
+ rType = 0;
+ vrLen = 267;
+ vrLoc = 0;
+ };
+ 2B823B1D0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 43";
+ rLen = 0;
+ rLoc = 1482;
+ rType = 0;
+ vrLen = 1003;
+ vrLoc = 4390;
+ };
+ 2B823B1E0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B1F0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 8";
+ rLen = 0;
+ rLoc = 161;
+ rType = 0;
+ vrLen = 267;
+ vrLoc = 0;
+ };
+ 2B823B200F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 23";
+ rLen = 0;
+ rLoc = 1217;
+ rType = 0;
+ vrLen = 594;
+ vrLoc = 205;
+ };
+ 2B823B210F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B220F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 123";
+ rLen = 24;
+ rLoc = 4922;
+ rType = 0;
+ vrLen = 1637;
+ vrLoc = 2647;
+ };
+ 2B823B230F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 26";
+ rLen = 24;
+ rLoc = 1301;
+ rType = 0;
+ vrLen = 541;
+ vrLoc = 292;
+ };
+ 2B823B240F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 123";
+ rLen = 24;
+ rLoc = 4922;
+ rType = 0;
+ vrLen = 947;
+ vrLoc = 703;
+ };
+ 2B823B250F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B260F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1019;
+ vrLoc = 1055;
+ };
+ 2B823B270F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 8";
+ rLen = 0;
+ rLoc = 161;
+ rType = 0;
+ vrLen = 267;
+ vrLoc = 0;
+ };
+ 2B823B280F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1256;
+ vrLoc = 703;
+ };
+ 2B823B290F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1043;
+ vrLoc = 888;
+ };
+ 2B823B2A0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B2B0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 32";
+ rLen = 49;
+ rLoc = 1152;
+ rType = 0;
+ vrLen = 1096;
+ vrLoc = 700;
+ };
+ 2B823B2C0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 11";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2B823B2D0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 1096;
+ vrLoc = 700;
+ };
+ 2B823B2E0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1254;
+ vrLoc = 703;
+ };
+ 2B823B2F0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 13";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2B823B300F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 1066;
+ vrLoc = 832;
+ };
+ 2B823B310F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 36";
+ rLen = 49;
+ rLoc = 1430;
+ rType = 0;
+ vrLen = 1254;
+ vrLoc = 703;
+ };
+ 2B823B320F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 10";
+ rLen = 0;
+ rLoc = 204;
+ rType = 0;
+ vrLen = 660;
+ vrLoc = 0;
+ };
+ 2B823B330F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 25";
+ rLen = 37;
+ rLoc = 937;
+ rType = 0;
+ vrLen = 883;
+ vrLoc = 767;
+ };
+ 2B823B340F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 9";
+ rLen = 0;
+ rLoc = 204;
+ rType = 0;
+ vrLen = 608;
+ vrLoc = 0;
+ };
+ 2B823B350F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2B823B360F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 26";
+ rLen = 0;
+ rLoc = 1395;
+ rType = 0;
+ vrLen = 679;
+ vrLoc = 206;
+ };
+ 2B823B370F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2B823B380F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2B823B390F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 36";
+ rLen = 49;
+ rLoc = 1430;
+ rType = 0;
+ vrLen = 1254;
+ vrLoc = 703;
+ };
+ 2B823B3A0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 1074;
+ vrLoc = 891;
+ };
+ 2B823B3B0F2578EF007AE24B /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 36";
+ rLen = 49;
+ rLoc = 1430;
+ rType = 0;
+ vrLen = 1325;
+ vrLoc = 1480;
+ };
+ 2BAB796E0F2AAE6400A1588A /* NSMutableArray+BSJSONAdditions.m:37 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ functionName = "-toJson";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 37;
+ modificationTime = 254455396.289642;
+ state = 1;
+ };
+ 2BAB79720F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 36";
+ rLen = 49;
+ rLoc = 1430;
+ rType = 0;
+ vrLen = 1325;
+ vrLoc = 1480;
+ };
+ 2BAB79730F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 741;
+ vrLoc = 1055;
+ };
+ 2BAB79740F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 13";
+ rLen = 0;
+ rLoc = 293;
+ rType = 0;
+ vrLen = 305;
+ vrLoc = 0;
+ };
+ 2BAB79750F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 13";
+ rLen = 0;
+ rLoc = 898;
+ rType = 0;
+ vrLen = 438;
+ vrLoc = 158;
+ };
+ 2BAB79760F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 25";
+ rLen = 37;
+ rLoc = 937;
+ rType = 0;
+ vrLen = 494;
+ vrLoc = 1156;
+ };
+ 2BAB79770F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 29";
+ rLen = 18;
+ rLoc = 1021;
+ rType = 0;
+ vrLen = 586;
+ vrLoc = 703;
+ };
+ 2BAB79780F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
+ name = "NSScanner+BSJSONAdditions.m: 36";
+ rLen = 49;
+ rLoc = 1430;
+ rType = 0;
+ vrLen = 1325;
+ vrLoc = 1480;
+ };
+ 2BAB79790F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB797A0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 13";
+ rLen = 0;
+ rLoc = 875;
+ rType = 0;
+ vrLen = 845;
+ vrLoc = 40;
+ };
+ 2BAB797B0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB797C0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 13";
+ rLen = 0;
+ rLoc = 901;
+ rType = 0;
+ vrLen = 821;
+ vrLoc = 40;
+ };
+ 2BAB797D0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB797E0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 10";
+ rLen = 0;
+ rLoc = 205;
+ rType = 0;
+ vrLen = 421;
+ vrLoc = 162;
+ };
+ 2BAB797F0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB79800F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 26";
+ rLen = 0;
+ rLoc = 1360;
+ rType = 0;
+ vrLen = 672;
+ vrLoc = 96;
+ };
+ 2BAB79810F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB79820F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 26";
+ rLen = 0;
+ rLoc = 1360;
+ rType = 0;
+ vrLen = 672;
+ vrLoc = 96;
+ };
+ 2BAB79830F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2BAB79840F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB79850F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 1074;
+ vrLoc = 891;
+ };
+ 2BAB79860F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2BAB79870F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB79880F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 1152;
+ vrLoc = 916;
+ };
+ 2BAB79890F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB798A0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 1019;
+ vrLoc = 1055;
+ };
+ 2BAB798B0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2BAB798C0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB798D0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2BAB798E0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB798F0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2BAB79900F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB79910F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2BAB79920F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB79930F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 32";
+ rLen = 37;
+ rLoc = 1122;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 451;
+ };
+ 2BAB79940F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB79950F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
+ name = "NSScanner+BSJSONAdditions.h: 29";
+ rLen = 89;
+ rLoc = 1009;
+ rType = 0;
+ vrLen = 741;
+ vrLoc = 1055;
+ };
+ 2BAB79960F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 25";
+ rLen = 37;
+ rLoc = 937;
+ rType = 0;
+ vrLen = 494;
+ vrLoc = 1156;
+ };
+ 2BAB79970F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 26";
+ rLen = 0;
+ rLoc = 1360;
+ rType = 0;
+ vrLen = 419;
+ vrLoc = 158;
+ };
+ 2BAB79980F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 25";
+ rLen = 37;
+ rLoc = 937;
+ rType = 0;
+ vrLen = 494;
+ vrLoc = 1156;
+ };
+ 2BAB79990F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 26";
+ rLen = 0;
+ rLoc = 1360;
+ rType = 0;
+ vrLen = 523;
+ vrLoc = 54;
+ };
+ 2BAB799A0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 29";
+ rLen = 18;
+ rLoc = 1021;
+ rType = 0;
+ vrLen = 586;
+ vrLoc = 703;
+ };
+ 2BAB799B0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 10";
+ rLen = 0;
+ rLoc = 223;
+ rType = 0;
+ vrLen = 304;
+ vrLoc = 0;
+ };
+ 2BAB799C0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 26";
+ rLen = 0;
+ rLoc = 1360;
+ rType = 0;
+ vrLen = 526;
+ vrLoc = 51;
+ };
+ 2BAB799D0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 25";
+ rLen = 37;
+ rLoc = 937;
+ rType = 0;
+ vrLen = 494;
+ vrLoc = 1156;
+ };
+ 2BAB799E0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 19";
+ rLen = 0;
+ rLoc = 1088;
+ rType = 0;
+ vrLen = 497;
+ vrLoc = 287;
+ };
+ 2BAB799F0F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
+ name = "NSMutableArray+BSJSONAdditions.h: 13";
+ rLen = 0;
+ rLoc = 293;
+ rType = 0;
+ vrLen = 305;
+ vrLoc = 0;
+ };
+ 2BAB79A00F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
+ name = "NSMutableArray+BSJSONAdditions.m: 13";
+ rLen = 0;
+ rLoc = 898;
+ rType = 0;
+ vrLen = 438;
+ vrLoc = 158;
+ };
+ 2BAB79A10F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
+ name = "NSMutableDictionary+BSJSONAdditions.m: 25";
+ rLen = 37;
+ rLoc = 937;
+ rType = 0;
+ vrLen = 494;
+ vrLoc = 1156;
+ };
+ 2BAB79A20F2AC8E000A1588A /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
+ name = "NSMutableDictionary+BSJSONAdditions.h: 29";
+ rLen = 18;
+ rLoc = 1021;
+ rType = 0;
+ vrLen = 586;
+ vrLoc = 703;
+ };
2BC0D1EB0F19B3420011E45A /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
@@ -50,30 +1219,45 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 2BC0D1EF0F19B3E20011E45A /* NSDictionary+BSJSONAdditions.h */ = {
+ 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 630}}";
- sepNavSelRange = "{1124, 0}";
- sepNavVisRange = "{451, 1048}";
- sepNavWindowFrame = "{{398, 202}, {750, 558}}";
+ sepNavIntBoundsRect = "{{0, 0}, {763, 630}}";
+ sepNavSelRange = "{989, 0}";
+ sepNavVisRange = "{914, 676}";
+ sepNavWindowFrame = "{{373, 180}, {750, 558}}";
};
};
- 2BC0D1F00F19B3E20011E45A /* NSDictionary+BSJSONAdditions.m */ = {
+ 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 2758}}";
- sepNavSelRange = "{1120, 0}";
- sepNavVisRange = "{448, 1057}";
- sepNavWindowFrame = "{{262, 26}, {750, 558}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1040, 2814}}";
+ sepNavSelRange = "{5999, 0}";
+ sepNavVisRange = "{6407, 422}";
+ sepNavWindowFrame = "{{502, 211}, {750, 558}}";
};
};
2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 840}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 1117}";
+ sepNavIntBoundsRect = "{{0, 0}, {763, 840}}";
+ sepNavSelRange = "{1009, 89}";
+ sepNavVisRange = "{1490, 584}";
sepNavWindowFrame = "{{216, 68}, {750, 558}}";
};
};
+ 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {800, 4452}}";
+ sepNavSelRange = "{1531, 0}";
+ sepNavVisRange = "{3230, 501}";
+ };
+ };
+ 32DBCF5E0370ADEE00C91783 /* BSJSON_Prefix.pch */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {691, 430}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{0, 144}";
+ sepNavWindowFrame = "{{55, 215}, {750, 558}}";
+ };
+ };
D2AAC0C605546C1D00DB518D /* BSJSON */ = {
activeExec = 0;
};
View
34 src/BSJSON/BSJSON.xcodeproj/project.pbxproj
@@ -7,8 +7,10 @@
objects = {
/* Begin PBXBuildFile section */
- 2BC0D1F30F19B3E20011E45A /* NSDictionary+BSJSONAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC0D1EF0F19B3E20011E45A /* NSDictionary+BSJSONAdditions.h */; };
- 2BC0D1F40F19B3E20011E45A /* NSDictionary+BSJSONAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BC0D1F00F19B3E20011E45A /* NSDictionary+BSJSONAdditions.m */; };
+ 2B823AE90F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */; };
+ 2B823AEA0F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */; };
+ 2BC0D1F30F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */; };
+ 2BC0D1F40F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */; };
2BC0D1F50F19B3E20011E45A /* NSScanner+BSJSONAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */; };
2BC0D1F60F19B3E20011E45A /* NSScanner+BSJSONAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */; };
D2AAC0CC05546C4400DB518D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
@@ -18,8 +20,10 @@
0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 2BC0D1EF0F19B3E20011E45A /* NSDictionary+BSJSONAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+BSJSONAdditions.h"; sourceTree = "<group>"; };
- 2BC0D1F00F19B3E20011E45A /* NSDictionary+BSJSONAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+BSJSONAdditions.m"; sourceTree = "<group>"; };
+ 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+BSJSONAdditions.h"; sourceTree = "<group>"; };
+ 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+BSJSONAdditions.m"; sourceTree = "<group>"; };
+ 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableDictionary+BSJSONAdditions.h"; sourceTree = "<group>"; };
+ 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+BSJSONAdditions.m"; sourceTree = "<group>"; };
2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSScanner+BSJSONAdditions.h"; sourceTree = "<group>"; };
2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSScanner+BSJSONAdditions.m"; sourceTree = "<group>"; };
32DBCF5E0370ADEE00C91783 /* BSJSON_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSJSON_Prefix.pch; sourceTree = "<group>"; };
@@ -70,10 +74,12 @@
08FB77AEFE84172EC02AAC07 /* Classes */ = {
isa = PBXGroup;
children = (
- 2BC0D1EF0F19B3E20011E45A /* NSDictionary+BSJSONAdditions.h */,
- 2BC0D1F00F19B3E20011E45A /* NSDictionary+BSJSONAdditions.m */,
+ 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */,
+ 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */,
2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */,
2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */,
+ 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */,
+ 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */,
);
name = Classes;
sourceTree = "<group>";
@@ -111,8 +117,9 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
- 2BC0D1F30F19B3E20011E45A /* NSDictionary+BSJSONAdditions.h in Headers */,
+ 2BC0D1F30F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h in Headers */,
2BC0D1F50F19B3E20011E45A /* NSScanner+BSJSONAdditions.h in Headers */,
+ 2B823AE90F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -159,8 +166,9 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 2BC0D1F40F19B3E20011E45A /* NSDictionary+BSJSONAdditions.m in Sources */,
+ 2BC0D1F40F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m in Sources */,
2BC0D1F60F19B3E20011E45A /* NSScanner+BSJSONAdditions.m in Sources */,
+ 2B823AEA0F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -205,21 +213,25 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
- SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
};
name = Debug;
};
1DEB918308733D990010E9CD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
- ppc,
i386,
+ ppc,
+ ppc64,
+ x86_64,
);
+ GCC_ENABLE_OBJC_GC = supported;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
- SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
+ STRIPFLAGS = "";
};
name = Release;
};
View
15 src/BSJSON/NSMutableArray+BSJSONAdditions.h
@@ -0,0 +1,15 @@
+//
+// NSMutableArray+BSJSONAdditions.h
+// BSJSON
+//
+// Created by Matt Aimonetti on 1/18/09.
+// Copyright 2009 m|a agile consulting. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "NSScanner+BSJSONAdditions.h"
+
+@interface NSMutableArray (BSJSONAdditions)
+- (NSMutableString *)toJson;
+
+@end
View
54 src/BSJSON/NSMutableArray+BSJSONAdditions.m
@@ -0,0 +1,54 @@
+//
+// NSMutableArray+BSJSONAdditions.m
+// BSJSON
+//
+// Created by Matt Aimonetti on 1/18/09.
+// Copyright 2009 m|a agile consulting. All rights reserved.
+//
+
+#import "NSMutableArray+BSJSONAdditions.h"
+
+@implementation NSMutableArray (BSJSONAdditions)
+
+- (NSMutableString *)toDryJson{
+
+ NSMutableString *jsonString = [[NSMutableString alloc] init];
+ [jsonString appendString:jsonArrayStartString];
+
+ NSMutableDictionary *jsonDic = [[NSMutableDictionary alloc] init];
+
+ if ([self count] > 0) {
+ [jsonString appendString:[jsonDic jsonStringForValue:[self objectAtIndex:0] withIndentLevel:0]];
+ }
+
+ int i;
+ for (i = 1; i < [self count]; i++) {
+ [jsonString appendFormat:@"%@ %@", jsonValueSeparatorString, [jsonDic jsonStringForValue:[self objectAtIndex:i] withIndentLevel:0]];
+ }
+
+ [jsonString appendString:jsonArrayEndString];
+ return [jsonString autorelease];
+}
+
+
+- (NSMutableString *)toJson{
+
+ NSMutableString *jsonString = [[NSMutableString alloc] init];
+ [jsonString appendString:jsonArrayStartString];
+
+ NSMutableDictionary *jsonDic = [[NSMutableDictionary alloc] init];
+
+ if ([self count] > 0) {
+ [jsonString appendString:[jsonDic jsonStringForValue:[self objectAtIndex:0] withIndentLevel:0]];
+ }
+
+ int i;
+ for (i = 1; i < [self count]; i++) {
+ [jsonString appendFormat:@"%@ %@", jsonValueSeparatorString, [jsonDic jsonStringForValue:[self objectAtIndex:i] withIndentLevel:0]];
+ }
+
+ [jsonString appendString:jsonArrayEndString];
+ return [jsonString autorelease];
+}
+
+@end
View
20 src/BSJSON/NSDictionary+BSJSONAdditions.h → ...SON/NSMutableDictionary+BSJSONAdditions.h
@@ -23,23 +23,23 @@
#import <Cocoa/Cocoa.h>
-extern NSString *jsonIndentString;
+extern NSMutableString *jsonIndentString;
extern const int jsonDoNotIndent;
-@interface NSDictionary (BSJSONAdditions)
+@interface NSMutableDictionary (BSJSONAdditions)
-+ (NSDictionary *)dictionaryWithJSONString:(NSString *)jsonString;
-- (NSString *)jsonStringValue;
++ (NSMutableDictionary *)dictionaryWithJSONString:(NSMutableString *)jsonString;
+- (NSMutableString *)jsonStringValue;
@end
-@interface NSDictionary (PrivateBSJSONAdditions)
+@interface NSMutableDictionary (PrivateBSJSONAdditions)
-- (NSString *)jsonStringValueWithIndentLevel:(int)level;
-- (NSString *)jsonStringForValue:(id)value withIndentLevel:(int)level;
-- (NSString *)jsonStringForArray:(NSArray *)array withIndentLevel:(int)level;
-- (NSString *)jsonStringForString:(NSString *)string;
-- (NSString *)jsonIndentStringForLevel:(int)level;
+- (NSMutableString *)jsonStringValueWithIndentLevel:(int)level;
+- (NSMutableString *)jsonStringForValue:(id)value withIndentLevel:(int)level;
+- (NSMutableString *)jsonStringForArray:(NSMutableArray *)array withIndentLevel:(int)level;
+- (NSMutableString *)jsonStringForString:(NSMutableString *)string;
+- (NSMutableString *)jsonIndentStringForLevel:(int)level;
@end
View
48 src/BSJSON/NSDictionary+BSJSONAdditions.m → ...SON/NSMutableDictionary+BSJSONAdditions.m
@@ -21,47 +21,49 @@
// appreciated, just to let me know that people are finding my
// code useful. You can reach me at blakeseely@mac.com
-#import "NSDictionary+BSJSONAdditions.h"
+#import "NSMutableDictionary+BSJSONAdditions.h"
#import "NSScanner+BSJSONAdditions.h"
-NSString *jsonIndentString = @"\t"; // Modify this string to change how the output formats.
+NSMutableString *jsonIndentString = @""; // Modify this string to change how the output formats.
const int jsonDoNotIndent = -1;
+
+// Added for macruby
void Init_BSJSON(void) { }
-@implementation NSDictionary (BSJSONAdditions)
+@implementation NSMutableDictionary (BSJSONAdditions)
-+ (NSDictionary *)dictionaryWithJSONString:(NSString *)jsonString
++ (NSMutableDictionary *)dictionaryWithJSONString:(NSMutableString *)jsonString
{
NSScanner *scanner = [[NSScanner alloc] initWithString:jsonString];
- NSDictionary *dictionary = nil;
+ NSMutableDictionary *dictionary = nil;
[scanner scanJSONObject:&dictionary];
[scanner release];
return dictionary;
}
-- (NSString *)jsonStringValue
+- (NSMutableString *)jsonStringValue
{
- return [self jsonStringValueWithIndentLevel:0];
+ return [self jsonStringValueWithIndentLevel:-1];
}
-@end
+/*@end
-@implementation NSDictionary (PrivateBSJSONAdditions)
+@implementation NSMutableDictionary (PrivateBSJSONAdditions)*/
-- (NSString *)jsonStringValueWithIndentLevel:(int)level
+- (NSMutableString *)jsonStringValueWithIndentLevel:(int)level
{
NSMutableString *jsonString = [[NSMutableString alloc] init];
[jsonString appendString:jsonObjectStartString];
NSEnumerator *keyEnum = [self keyEnumerator];
- NSString *keyString = [keyEnum nextObject];
- NSString *valueString;
+ NSMutableString *keyString = [keyEnum nextObject];
+ NSMutableString *valueString;
if (keyString != nil) {
valueString = [self jsonStringForValue:[self objectForKey:keyString] withIndentLevel:level];
if (level != jsonDoNotIndent) { // indent before each key
[jsonString appendString:[self jsonIndentStringForLevel:level]];
}
- [jsonString appendFormat:@" %@ %@ %@", [self jsonStringForString:keyString], jsonKeyValueSeparatorString, valueString];
+ [jsonString appendFormat:@"%@%@%@", [self jsonStringForString:keyString], jsonKeyValueSeparatorString, valueString];
}
while (keyString = [keyEnum nextObject]) {
@@ -70,7 +72,7 @@ - (NSString *)jsonStringValueWithIndentLevel:(int)level
if (level != jsonDoNotIndent) { // indent before each key
[jsonString appendFormat:@"%@", [self jsonIndentStringForLevel:level]];
}
- [jsonString appendFormat:@" %@ %@ %@", [self jsonStringForString:keyString], jsonKeyValueSeparatorString, valueString];
+ [jsonString appendFormat:@"%@%@%@", [self jsonStringForString:keyString], jsonKeyValueSeparatorString, valueString];
}
//[jsonString appendString:@"\n"];
@@ -79,15 +81,15 @@ - (NSString *)jsonStringValueWithIndentLevel:(int)level
return [jsonString autorelease];
}
-- (NSString *)jsonStringForValue:(id)value withIndentLevel:(int)level
+- (NSMutableString *)jsonStringForValue:(id)value withIndentLevel:(int)level
{
- NSString *jsonString;
+ NSMutableString *jsonString;
if ([value respondsToSelector:@selector(characterAtIndex:)]) // String
- jsonString = [self jsonStringForString:(NSString *)value];
+ jsonString = [self jsonStringForString:(NSMutableString *)value];
else if ([value respondsToSelector:@selector(keyEnumerator)]) // Dictionary
- jsonString = [(NSDictionary *)value jsonStringValueWithIndentLevel:(level + 1)];
+ jsonString = [(NSMutableDictionary *)value jsonStringValueWithIndentLevel:(level + 1)];
else if ([value respondsToSelector:@selector(objectAtIndex:)]) // Array
- jsonString = [self jsonStringForArray:(NSArray *)value withIndentLevel:level];
+ jsonString = [self jsonStringForArray:(NSMutableArray *)value withIndentLevel:level];
else if (value == [NSNull null]) // null
jsonString = jsonNullString;
else if ([value respondsToSelector:@selector(objCType)]) { // NSNumber - representing true, false, and any form of numeric
@@ -107,7 +109,7 @@ - (NSString *)jsonStringForValue:(id)value withIndentLevel:(int)level
return jsonString;
}
-- (NSString *)jsonStringForArray:(NSArray *)array withIndentLevel:(int)level
+- (NSMutableString *)jsonStringForArray:(NSMutableArray *)array withIndentLevel:(int)level
{
NSMutableString *jsonString = [[NSMutableString alloc] init];
[jsonString appendString:jsonArrayStartString];
@@ -125,7 +127,7 @@ - (NSString *)jsonStringForArray:(NSArray *)array withIndentLevel:(int)level
return [jsonString autorelease];
}
-- (NSString *)jsonStringForString:(NSString *)string
+- (NSMutableString *)jsonStringForString:(NSMutableString *)string
{
NSMutableString *jsonString = [[NSMutableString alloc] init];
[jsonString appendString:jsonStringDelimiterString];
@@ -168,15 +170,15 @@ - (NSString *)jsonStringForString:(NSString *)string
break;
*/
default:
- [jsonString appendString:[NSString stringWithCharacters:&nextChar length:1]];
+ [jsonString appendString:[NSMutableString stringWithCharacters:&nextChar length:1]];
break;
}
}
[jsonString appendString:jsonStringDelimiterString];
return [jsonString autorelease];
}
-- (NSString *)jsonIndentStringForLevel:(int)level
+- (NSMutableString *)jsonIndentStringForLevel:(int)level
{
NSMutableString *indentString = [[NSMutableString alloc] init];
if (level != jsonDoNotIndent) {
View
28 src/BSJSON/NSScanner+BSJSONAdditions.h
@@ -24,25 +24,25 @@
#import <Cocoa/Cocoa.h>
-extern NSString *jsonObjectStartString;
-extern NSString *jsonObjectEndString;
-extern NSString *jsonArrayStartString;
-extern NSString *jsonArrayEndString;
-extern NSString *jsonKeyValueSeparatorString;
-extern NSString *jsonValueSeparatorString;
-extern NSString *jsonStringDelimiterString;
-extern NSString *jsonStringEscapedDoubleQuoteString;
-extern NSString *jsonStringEscapedSlashString;
-extern NSString *jsonTrueString;
-extern NSString *jsonFalseString;
-extern NSString *jsonNullString;
+extern NSMutableString *jsonObjectStartString;
+extern NSMutableString *jsonObjectEndString;
+extern NSMutableString *jsonArrayStartString;
+extern NSMutableString *jsonArrayEndString;
+extern NSMutableString *jsonKeyValueSeparatorString;
+extern NSMutableString *jsonValueSeparatorString;
+extern NSMutableString *jsonStringDelimiterString;
+extern NSMutableString *jsonStringEscapedDoubleQuoteString;
+extern NSMutableString *jsonStringEscapedSlashString;
+extern NSMutableString *jsonTrueString;
+extern NSMutableString *jsonFalseString;
+extern NSMutableString *jsonNullString;
@interface NSScanner (PrivateBSJSONAdditions)
-- (BOOL)scanJSONObject:(NSDictionary **)dictionary;
+- (BOOL)scanJSONObject:(NSMutableDictionary **)dictionary;
- (BOOL)scanJSONArray:(NSArray **)array;
-- (BOOL)scanJSONString:(NSString **)string;
+- (BOOL)scanJSONString:(NSMutableString **)string;
- (BOOL)scanJSONValue:(id *)value;
- (BOOL)scanJSONNumber:(NSNumber **)number;
View
42 src/BSJSON/NSScanner+BSJSONAdditions.m
@@ -28,37 +28,37 @@
#import "NSScanner+BSJSONAdditions.h"
-NSString *jsonObjectStartString = @"{";
-NSString *jsonObjectEndString = @"}";
-NSString *jsonArrayStartString = @"[";
-NSString *jsonArrayEndString = @"]";
-NSString *jsonKeyValueSeparatorString = @":";
-NSString *jsonValueSeparatorString = @",";
-NSString *jsonStringDelimiterString = @"\"";
-NSString *jsonStringEscapedDoubleQuoteString = @"\\\"";
-NSString *jsonStringEscapedSlashString = @"\\\\";
-NSString *jsonTrueString = @"true";
-NSString *jsonFalseString = @"false";
-NSString *jsonNullString = @"null";
+NSMutableString *jsonObjectStartString = @"{";
+NSMutableString *jsonObjectEndString = @"}";
+NSMutableString *jsonArrayStartString = @"[";
+NSMutableString *jsonArrayEndString = @"]";
+NSMutableString *jsonKeyValueSeparatorString = @":";
+NSMutableString *jsonValueSeparatorString = @",";
+NSMutableString *jsonStringDelimiterString = @"\"";
+NSMutableString *jsonStringEscapedDoubleQuoteString = @"\\\"";
+NSMutableString *jsonStringEscapedSlashString = @"\\\\";
+NSMutableString *jsonTrueString = @"true";
+NSMutableString *jsonFalseString = @"false";
+NSMutableString *jsonNullString = @"null";
@implementation NSScanner (PrivateBSJSONAdditions)
-- (BOOL)scanJSONObject:(NSDictionary **)dictionary
+- (BOOL)scanJSONObject:(NSMutableDictionary **)dictionary
{
//[self setCharactersToBeSkipped:nil];
BOOL result = NO;
/* START - April 21, 2006 - Updated to bypass irrelevant characters at the beginning of a JSON string */
- NSString *ignoredString;
+ NSMutableString *ignoredString;
[self scanUpToString:jsonObjectStartString intoString:&ignoredString];
/* END - April 21, 2006 */
if (![self scanJSONObjectStartString]) {
// TODO: Error condition. For now, return false result, do nothing with the dictionary handle
} else {
NSMutableDictionary *jsonKeyValues = [[[NSMutableDictionary alloc] init] autorelease];
- NSString *key = nil;
+ NSMutableString *key = nil;
id value;
[self scanJSONWhiteSpace];
while (([self scanJSONString:&key]) && ([self scanJSONKeyValueSeparator]) && ([self scanJSONValue:&value])) {
@@ -100,12 +100,12 @@ - (BOOL)scanJSONArray:(NSArray **)array
return result;
}
-- (BOOL)scanJSONString:(NSString **)string
+- (BOOL)scanJSONString:(NSMutableString **)string
{
BOOL result = NO;
if ([self scanJSONStringDelimiterString]) {
NSMutableString *chars = [[[NSMutableString alloc] init] autorelease];
- NSString *characterFormat = @"%C";
+ NSMutableString *characterFormat = @"%C";
// process character by character until we finish the string or reach another double-quote
while ((![self isAtEnd]) && ([[self string] characterAtIndex:[self scanLocation]] != '\"')) {
@@ -153,10 +153,10 @@ - (BOOL)scanJSONString:(NSString **)string
break;
case 'u': // unicode sequence - get string of hex chars, convert to int, convert to unichar, append
[self setScanLocation:([self scanLocation] + 2)]; // advance past '\u'
- NSString *digits = [[self string] substringWithRange:NSMakeRange([self scanLocation], 4)];
+ NSMutableString *digits = [[self string] substringWithRange:NSMakeRange([self scanLocation], 4)];
/* START Updated code modified from code fix submitted by Bill Garrison - March 28, 2006 - http://www.standardorbit.net */
NSScanner *hexScanner = [NSScanner scannerWithString:digits];
- NSString *verifiedHexDigits;
+ NSMutableString *verifiedHexDigits;
NSCharacterSet *hexDigitSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEF"];
if (NO == [hexScanner scanCharactersFromSet:hexDigitSet intoString:&verifiedHexDigits])
return NO;
@@ -189,7 +189,7 @@ - (BOOL)scanJSONString:(NSString **)string
return result;
/* this code is more appropriate if you have a separate method to unescape the found string
- for example, between inputting json and outputting it, it may make more sense to have a category on NSString to perform
+ for example, between inputting json and outputting it, it may make more sense to have a category on NSMutableString to perform
escaping and unescaping. Keeping this code and looking into this for a future update.
unsigned int searchLength = [[self string] length] - [self scanLocation];
unsigned int quoteLocation = [[self string] rangeOfString:jsonStringDelimiterString options:0 range:NSMakeRange([self scanLocation], searchLength)].location;
@@ -218,7 +218,7 @@ - (BOOL)scanJSONValue:(id *)value
BOOL result = NO;
[self scanJSONWhiteSpace];
- NSString *substring = [[self string] substringWithRange:NSMakeRange([self scanLocation], 1)];
+ NSMutableString *substring = [[self string] substringWithRange:NSMakeRange([self scanLocation], 1)];
unsigned int trueLocation = [[self string] rangeOfString:jsonTrueString options:0 range:NSMakeRange([self scanLocation], ([[self string] length] - [self scanLocation]))].location;
unsigned int falseLocation = [[self string] rangeOfString:jsonFalseString options:0 range:NSMakeRange([self scanLocation], ([[self string] length] - [self scanLocation]))].location;
unsigned int nullLocation = [[self string] rangeOfString:jsonNullString options:0 range:NSMakeRange([self scanLocation], ([[self string] length] - [self scanLocation]))].location;
View
1 tests/test_json.rb
@@ -3,7 +3,6 @@
require 'stringio'
class TC_JSON < Test::Unit::TestCase
- include JSON
def setup
@ary = [1, "foo", 3.14, 4711.0, 2.718, nil, [1,-2,3], false, true].map do

2 comments on commit 2bd0b07

@alloy

Hi, could you please add your personal xcode files (mattetti.*) to your .gitignore file? It really clobbers the changeset view and is unnecessary anyways :) Thanks

@mattetti
Owner

sure thing, thanks for the tip

Please sign in to comment.