nixenvironment 0.0.118 → 0.0.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/nixenvironment +0 -17
- data/lib/nixenvironment/CFPropertyList228/README +44 -0
- data/lib/nixenvironment/CFPropertyList228/lib/cfpropertylist.rb +6 -0
- data/lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbBinaryCFPropertyList.rb +605 -0
- data/lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbCFPlistError.rb +28 -0
- data/lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbCFPropertyList.rb +432 -0
- data/lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbCFTypes.rb +266 -0
- data/lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbLibXMLParser.rb +147 -0
- data/lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbNokogiriParser.rb +151 -0
- data/lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbREXMLParser.rb +147 -0
- data/lib/nixenvironment/plist.rb +12 -11
- data/lib/nixenvironment/version.rb +1 -1
- metadata +10 -1
@@ -0,0 +1,147 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'rexml/document'
|
4
|
+
|
5
|
+
module CFPropertyList228
|
6
|
+
# XML parser
|
7
|
+
class ReXMLParser < ParserInterface
|
8
|
+
# read a XML file
|
9
|
+
# opts::
|
10
|
+
# * :file - The filename of the file to load
|
11
|
+
# * :data - The data to parse
|
12
|
+
def load(opts)
|
13
|
+
|
14
|
+
doc = nil
|
15
|
+
if(opts.has_key?(:file)) then
|
16
|
+
File.open(opts[:file], "rb") { |fd| doc = REXML::Document.new(fd) }
|
17
|
+
else
|
18
|
+
doc = REXML::Document.new(opts[:data])
|
19
|
+
end
|
20
|
+
|
21
|
+
if doc
|
22
|
+
root = doc.root.elements[1]
|
23
|
+
return import_xml(root)
|
24
|
+
end
|
25
|
+
rescue REXML::ParseException => e
|
26
|
+
raise CFFormatError.new('invalid XML: ' + e.message)
|
27
|
+
end
|
28
|
+
|
29
|
+
# serialize CFPropertyList228 object to XML
|
30
|
+
# opts = {}:: Specify options: :formatted - Use indention and line breaks
|
31
|
+
def to_str(opts={})
|
32
|
+
doc = REXML::Document.new
|
33
|
+
@doc = doc
|
34
|
+
|
35
|
+
doc.context[:attribute_quote] = :quote
|
36
|
+
|
37
|
+
doc.add_element 'plist', {'version' => '1.0'}
|
38
|
+
doc.root << opts[:root].to_xml(self)
|
39
|
+
|
40
|
+
formatter = if opts[:formatted] then
|
41
|
+
f = REXML::Formatters::Pretty.new(2)
|
42
|
+
f.compact = true
|
43
|
+
f
|
44
|
+
else
|
45
|
+
REXML::Formatters::Default.new
|
46
|
+
end
|
47
|
+
|
48
|
+
str = formatter.write(doc.root, "")
|
49
|
+
str1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n" + str + "\n"
|
50
|
+
str1.force_encoding('UTF-8') if str1.respond_to?(:force_encoding)
|
51
|
+
|
52
|
+
return str1
|
53
|
+
end
|
54
|
+
|
55
|
+
def new_node(name)
|
56
|
+
REXML::Element.new(name)
|
57
|
+
end
|
58
|
+
|
59
|
+
def new_text(val)
|
60
|
+
val
|
61
|
+
end
|
62
|
+
|
63
|
+
def append_node(parent, child)
|
64
|
+
if child.is_a?(String) then
|
65
|
+
parent.add_text child
|
66
|
+
else
|
67
|
+
parent.elements << child
|
68
|
+
end
|
69
|
+
parent
|
70
|
+
end
|
71
|
+
|
72
|
+
protected
|
73
|
+
|
74
|
+
# get the value of a DOM node
|
75
|
+
def get_value(n)
|
76
|
+
content = n.text
|
77
|
+
|
78
|
+
content.force_encoding('UTF-8') if content.respond_to?(:force_encoding)
|
79
|
+
content
|
80
|
+
end
|
81
|
+
|
82
|
+
# import the XML values
|
83
|
+
def import_xml(node)
|
84
|
+
ret = nil
|
85
|
+
|
86
|
+
case node.name
|
87
|
+
when 'dict'
|
88
|
+
hsh = Hash.new
|
89
|
+
key = nil
|
90
|
+
|
91
|
+
if node.has_elements? then
|
92
|
+
node.elements.each do |n|
|
93
|
+
next if n.name == '#text' # avoid a bug of libxml
|
94
|
+
next if n.name == '#comment'
|
95
|
+
|
96
|
+
if n.name == "key" then
|
97
|
+
key = get_value(n)
|
98
|
+
key = '' if key.nil? # REXML returns nil if key is empty
|
99
|
+
else
|
100
|
+
raise CFFormatError.new("Format error!") if key.nil?
|
101
|
+
hsh[key] = import_xml(n)
|
102
|
+
key = nil
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
if hsh['CF$UID'] and hsh.keys.length == 1
|
108
|
+
ret = CFUid.new(hsh['CF$UID'].value)
|
109
|
+
else
|
110
|
+
ret = CFDictionary.new(hsh)
|
111
|
+
end
|
112
|
+
|
113
|
+
when 'array'
|
114
|
+
ary = Array.new
|
115
|
+
|
116
|
+
if node.has_elements? then
|
117
|
+
node.elements.each do |n|
|
118
|
+
next if n.name == '#text' # avoid a bug of libxml
|
119
|
+
ary.push import_xml(n)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
ret = CFArray.new(ary)
|
124
|
+
|
125
|
+
when 'true'
|
126
|
+
ret = CFBoolean.new(true)
|
127
|
+
when 'false'
|
128
|
+
ret = CFBoolean.new(false)
|
129
|
+
when 'real'
|
130
|
+
ret = CFReal.new(get_value(node).to_f)
|
131
|
+
when 'integer'
|
132
|
+
ret = CFInteger.new(get_value(node).to_i)
|
133
|
+
when 'string'
|
134
|
+
ret = CFString.new(get_value(node))
|
135
|
+
ret.value = '' if ret.value.nil? # REXML returns nil for empty elements' .text attribute
|
136
|
+
when 'data'
|
137
|
+
ret = CFData.new(get_value(node))
|
138
|
+
when 'date'
|
139
|
+
ret = CFDate.new(CFDate.parse_date(get_value(node)))
|
140
|
+
end
|
141
|
+
|
142
|
+
return ret
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
# eof
|
data/lib/nixenvironment/plist.rb
CHANGED
@@ -1,25 +1,26 @@
|
|
1
|
-
|
1
|
+
require_relative 'CFPropertyList228/lib/cfpropertylist'
|
2
|
+
require_relative 'CFPropertyList228/lib/cfpropertylist/rbCFPropertyList'
|
2
3
|
|
3
4
|
module Nixenvironment
|
4
5
|
class Plist
|
5
|
-
FORMAT_BINARY =
|
6
|
-
FORMAT_XML =
|
7
|
-
FORMAT_PLAIN =
|
8
|
-
FORMAT_AUTO =
|
6
|
+
FORMAT_BINARY = CFPropertyList228::List::FORMAT_BINARY
|
7
|
+
FORMAT_XML = CFPropertyList228::List::FORMAT_XML
|
8
|
+
# FORMAT_PLAIN = CFPropertyList228::List::FORMAT_PLAIN
|
9
|
+
FORMAT_AUTO = CFPropertyList228::List::FORMAT_AUTO
|
9
10
|
|
10
11
|
def self.from_file(path)
|
11
|
-
new(
|
12
|
+
new(CFPropertyList228::List.new(:file => path))
|
12
13
|
end
|
13
14
|
|
14
15
|
def self.from_hash(hash)
|
15
|
-
plist =
|
16
|
-
plist.value =
|
16
|
+
plist = CFPropertyList228::List.new
|
17
|
+
plist.value = CFPropertyList228.guess(hash)
|
17
18
|
plist.format = FORMAT_XML
|
18
19
|
new(plist)
|
19
20
|
end
|
20
21
|
|
21
22
|
def self.from_str(str)
|
22
|
-
plist =
|
23
|
+
plist = CFPropertyList228::List.new
|
23
24
|
plist.load_str(str)
|
24
25
|
new(plist)
|
25
26
|
end
|
@@ -27,7 +28,7 @@ module Nixenvironment
|
|
27
28
|
def initialize(plist)
|
28
29
|
@plist = plist
|
29
30
|
@path = @plist.filename
|
30
|
-
@data =
|
31
|
+
@data = CFPropertyList228.native_types(@plist.value)
|
31
32
|
end
|
32
33
|
|
33
34
|
def [](key)
|
@@ -36,7 +37,7 @@ module Nixenvironment
|
|
36
37
|
|
37
38
|
def []=(key, value)
|
38
39
|
@data[key] = value
|
39
|
-
@plist.value =
|
40
|
+
@plist.value = CFPropertyList228.guess(@data, :convert_unknown_to_string => true)
|
40
41
|
end
|
41
42
|
|
42
43
|
def save(path = nil, format = nil, formatted = true)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nixenvironment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.119
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karen
|
@@ -276,6 +276,15 @@ files:
|
|
276
276
|
- legacy/UnityBuildAutomationScripts/NIXBuilder.cs
|
277
277
|
- legacy/UnityBuildEnvVars.py
|
278
278
|
- lib/nixenvironment.rb
|
279
|
+
- lib/nixenvironment/CFPropertyList228/README
|
280
|
+
- lib/nixenvironment/CFPropertyList228/lib/cfpropertylist.rb
|
281
|
+
- lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbBinaryCFPropertyList.rb
|
282
|
+
- lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbCFPlistError.rb
|
283
|
+
- lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbCFPropertyList.rb
|
284
|
+
- lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbCFTypes.rb
|
285
|
+
- lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbLibXMLParser.rb
|
286
|
+
- lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbNokogiriParser.rb
|
287
|
+
- lib/nixenvironment/CFPropertyList228/lib/cfpropertylist/rbREXMLParser.rb
|
279
288
|
- lib/nixenvironment/archiver.rb
|
280
289
|
- lib/nixenvironment/build_env_vars_loader.rb
|
281
290
|
- lib/nixenvironment/cmd_executor.rb
|