csd 0.1.5 → 0.1.6

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.
Files changed (258) hide show
  1. data/COPYING +1 -2
  2. data/README.rdoc +7 -1
  3. data/Rakefile +7 -2
  4. data/VERSION +1 -1
  5. data/csd.gemspec +18 -216
  6. data/lib/csd.rb +6 -16
  7. data/lib/csd/application.rb +2 -2
  8. data/lib/csd/application/default.rb +15 -14
  9. data/lib/csd/application/default/base.rb +1 -1
  10. data/lib/csd/application/minisip.rb +43 -11
  11. data/lib/csd/application/minisip/about.yml +5 -5
  12. data/lib/csd/application/minisip/base.rb +82 -70
  13. data/lib/csd/application/minisip/error.rb +1 -1
  14. data/lib/csd/application/minisip/options/common.rb +1 -1
  15. data/lib/csd/application/minisip/options/compile.rb +1 -1
  16. data/lib/csd/application/minisip/options/package.rb +1 -1
  17. data/lib/csd/application/minisip/unix.rb +40 -27
  18. data/lib/csd/application/minisip/unix/darwin.rb +12 -0
  19. data/lib/csd/application/minisip/unix/linux.rb +1 -11
  20. data/lib/csd/application/minisip/unix/linux/debian.rb +14 -25
  21. data/lib/csd/application/minisip/unix/linux/debian/ubuntu10.rb +12 -13
  22. data/lib/csd/applications.rb +5 -5
  23. data/lib/csd/commands.rb +164 -89
  24. data/lib/csd/container.rb +61 -0
  25. data/lib/csd/error.rb +10 -1
  26. data/lib/csd/extensions.rb +3 -2
  27. data/lib/csd/extensions/core/array.rb +29 -1
  28. data/lib/csd/extensions/core/dir.rb +15 -24
  29. data/lib/csd/extensions/core/object.rb +10 -2
  30. data/lib/csd/extensions/core/option_parser.rb +22 -3
  31. data/lib/csd/extensions/core/pathname.rb +30 -2
  32. data/lib/csd/extensions/core/string.rb +51 -4
  33. data/lib/csd/extensions/gem/platform.rb +18 -3
  34. data/lib/csd/{options.rb → options_parser.rb} +16 -20
  35. data/lib/csd/path_container.rb +24 -0
  36. data/lib/csd/user_interface.rb +2 -0
  37. data/lib/csd/user_interface/base.rb +26 -0
  38. data/lib/csd/user_interface/cli.rb +37 -0
  39. data/lib/csd/vendor/active_support/MIT-LICENSE +20 -0
  40. data/lib/csd/vendor/active_support/inflector.rb +155 -0
  41. data/lib/csd/vendor/term/GPL2-LICENSE +339 -0
  42. data/lib/csd/vendor/term/ansicolor.rb +113 -0
  43. data/lib/csd/version.rb +13 -4
  44. data/test/application/test_minisip.rb +45 -0
  45. data/test/functional/test_applications.rb +10 -16
  46. data/test/functional/test_commands.rb +260 -23
  47. data/test/unit/test_string.rb +1 -1
  48. metadata +18 -216
  49. data/lib/active_support.rb +0 -75
  50. data/lib/active_support/all.rb +0 -3
  51. data/lib/active_support/backtrace_cleaner.rb +0 -94
  52. data/lib/active_support/base64.rb +0 -42
  53. data/lib/active_support/basic_object.rb +0 -21
  54. data/lib/active_support/benchmarkable.rb +0 -60
  55. data/lib/active_support/buffered_logger.rb +0 -132
  56. data/lib/active_support/builder.rb +0 -6
  57. data/lib/active_support/cache.rb +0 -626
  58. data/lib/active_support/cache/compressed_mem_cache_store.rb +0 -13
  59. data/lib/active_support/cache/file_store.rb +0 -188
  60. data/lib/active_support/cache/mem_cache_store.rb +0 -191
  61. data/lib/active_support/cache/memory_store.rb +0 -159
  62. data/lib/active_support/cache/strategy/local_cache.rb +0 -164
  63. data/lib/active_support/cache/synchronized_memory_store.rb +0 -11
  64. data/lib/active_support/callbacks.rb +0 -600
  65. data/lib/active_support/concern.rb +0 -29
  66. data/lib/active_support/configurable.rb +0 -36
  67. data/lib/active_support/core_ext.rb +0 -3
  68. data/lib/active_support/core_ext/array.rb +0 -7
  69. data/lib/active_support/core_ext/array/access.rb +0 -46
  70. data/lib/active_support/core_ext/array/conversions.rb +0 -164
  71. data/lib/active_support/core_ext/array/extract_options.rb +0 -29
  72. data/lib/active_support/core_ext/array/grouping.rb +0 -100
  73. data/lib/active_support/core_ext/array/random_access.rb +0 -20
  74. data/lib/active_support/core_ext/array/uniq_by.rb +0 -17
  75. data/lib/active_support/core_ext/array/wrap.rb +0 -22
  76. data/lib/active_support/core_ext/benchmark.rb +0 -7
  77. data/lib/active_support/core_ext/big_decimal.rb +0 -1
  78. data/lib/active_support/core_ext/big_decimal/conversions.rb +0 -27
  79. data/lib/active_support/core_ext/cgi.rb +0 -1
  80. data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +0 -19
  81. data/lib/active_support/core_ext/class.rb +0 -4
  82. data/lib/active_support/core_ext/class/attribute.rb +0 -67
  83. data/lib/active_support/core_ext/class/attribute_accessors.rb +0 -63
  84. data/lib/active_support/core_ext/class/delegating_attributes.rb +0 -44
  85. data/lib/active_support/core_ext/class/inheritable_attributes.rb +0 -232
  86. data/lib/active_support/core_ext/class/subclasses.rb +0 -55
  87. data/lib/active_support/core_ext/date/acts_like.rb +0 -8
  88. data/lib/active_support/core_ext/date/calculations.rb +0 -240
  89. data/lib/active_support/core_ext/date/conversions.rb +0 -99
  90. data/lib/active_support/core_ext/date/freeze.rb +0 -31
  91. data/lib/active_support/core_ext/date_time/acts_like.rb +0 -13
  92. data/lib/active_support/core_ext/date_time/calculations.rb +0 -113
  93. data/lib/active_support/core_ext/date_time/conversions.rb +0 -102
  94. data/lib/active_support/core_ext/date_time/zones.rb +0 -17
  95. data/lib/active_support/core_ext/enumerable.rb +0 -119
  96. data/lib/active_support/core_ext/exception.rb +0 -3
  97. data/lib/active_support/core_ext/file.rb +0 -2
  98. data/lib/active_support/core_ext/file/atomic.rb +0 -41
  99. data/lib/active_support/core_ext/file/path.rb +0 -5
  100. data/lib/active_support/core_ext/float.rb +0 -1
  101. data/lib/active_support/core_ext/float/rounding.rb +0 -19
  102. data/lib/active_support/core_ext/hash.rb +0 -8
  103. data/lib/active_support/core_ext/hash/conversions.rb +0 -150
  104. data/lib/active_support/core_ext/hash/deep_merge.rb +0 -16
  105. data/lib/active_support/core_ext/hash/diff.rb +0 -13
  106. data/lib/active_support/core_ext/hash/except.rb +0 -24
  107. data/lib/active_support/core_ext/hash/indifferent_access.rb +0 -14
  108. data/lib/active_support/core_ext/hash/keys.rb +0 -45
  109. data/lib/active_support/core_ext/hash/reverse_merge.rb +0 -28
  110. data/lib/active_support/core_ext/hash/slice.rb +0 -38
  111. data/lib/active_support/core_ext/integer.rb +0 -3
  112. data/lib/active_support/core_ext/integer/inflections.rb +0 -14
  113. data/lib/active_support/core_ext/integer/multiple.rb +0 -6
  114. data/lib/active_support/core_ext/integer/time.rb +0 -39
  115. data/lib/active_support/core_ext/kernel.rb +0 -5
  116. data/lib/active_support/core_ext/kernel/agnostics.rb +0 -11
  117. data/lib/active_support/core_ext/kernel/debugger.rb +0 -16
  118. data/lib/active_support/core_ext/kernel/reporting.rb +0 -62
  119. data/lib/active_support/core_ext/kernel/requires.rb +0 -26
  120. data/lib/active_support/core_ext/kernel/singleton_class.rb +0 -13
  121. data/lib/active_support/core_ext/load_error.rb +0 -23
  122. data/lib/active_support/core_ext/logger.rb +0 -146
  123. data/lib/active_support/core_ext/module.rb +0 -12
  124. data/lib/active_support/core_ext/module/aliasing.rb +0 -70
  125. data/lib/active_support/core_ext/module/anonymous.rb +0 -24
  126. data/lib/active_support/core_ext/module/attr_accessor_with_default.rb +0 -31
  127. data/lib/active_support/core_ext/module/attr_internal.rb +0 -32
  128. data/lib/active_support/core_ext/module/attribute_accessors.rb +0 -66
  129. data/lib/active_support/core_ext/module/delegation.rb +0 -146
  130. data/lib/active_support/core_ext/module/deprecation.rb +0 -9
  131. data/lib/active_support/core_ext/module/introspection.rb +0 -88
  132. data/lib/active_support/core_ext/module/method_names.rb +0 -14
  133. data/lib/active_support/core_ext/module/reachable.rb +0 -10
  134. data/lib/active_support/core_ext/module/remove_method.rb +0 -6
  135. data/lib/active_support/core_ext/module/synchronization.rb +0 -42
  136. data/lib/active_support/core_ext/name_error.rb +0 -18
  137. data/lib/active_support/core_ext/numeric.rb +0 -2
  138. data/lib/active_support/core_ext/numeric/bytes.rb +0 -44
  139. data/lib/active_support/core_ext/numeric/time.rb +0 -77
  140. data/lib/active_support/core_ext/object.rb +0 -14
  141. data/lib/active_support/core_ext/object/acts_like.rb +0 -10
  142. data/lib/active_support/core_ext/object/blank.rb +0 -76
  143. data/lib/active_support/core_ext/object/conversions.rb +0 -4
  144. data/lib/active_support/core_ext/object/duplicable.rb +0 -65
  145. data/lib/active_support/core_ext/object/extending.rb +0 -11
  146. data/lib/active_support/core_ext/object/instance_variables.rb +0 -67
  147. data/lib/active_support/core_ext/object/misc.rb +0 -2
  148. data/lib/active_support/core_ext/object/returning.rb +0 -42
  149. data/lib/active_support/core_ext/object/to_param.rb +0 -49
  150. data/lib/active_support/core_ext/object/to_query.rb +0 -27
  151. data/lib/active_support/core_ext/object/try.rb +0 -36
  152. data/lib/active_support/core_ext/object/with_options.rb +0 -26
  153. data/lib/active_support/core_ext/proc.rb +0 -14
  154. data/lib/active_support/core_ext/process.rb +0 -1
  155. data/lib/active_support/core_ext/process/daemon.rb +0 -23
  156. data/lib/active_support/core_ext/range.rb +0 -4
  157. data/lib/active_support/core_ext/range/blockless_step.rb +0 -29
  158. data/lib/active_support/core_ext/range/conversions.rb +0 -21
  159. data/lib/active_support/core_ext/range/include_range.rb +0 -21
  160. data/lib/active_support/core_ext/range/overlaps.rb +0 -8
  161. data/lib/active_support/core_ext/regexp.rb +0 -5
  162. data/lib/active_support/core_ext/rexml.rb +0 -46
  163. data/lib/active_support/core_ext/string.rb +0 -12
  164. data/lib/active_support/core_ext/string/access.rb +0 -99
  165. data/lib/active_support/core_ext/string/behavior.rb +0 -7
  166. data/lib/active_support/core_ext/string/conversions.rb +0 -61
  167. data/lib/active_support/core_ext/string/encoding.rb +0 -11
  168. data/lib/active_support/core_ext/string/exclude.rb +0 -6
  169. data/lib/active_support/core_ext/string/filters.rb +0 -49
  170. data/lib/active_support/core_ext/string/inflections.rb +0 -149
  171. data/lib/active_support/core_ext/string/interpolation.rb +0 -2
  172. data/lib/active_support/core_ext/string/multibyte.rb +0 -72
  173. data/lib/active_support/core_ext/string/output_safety.rb +0 -109
  174. data/lib/active_support/core_ext/string/starts_ends_with.rb +0 -4
  175. data/lib/active_support/core_ext/string/xchar.rb +0 -18
  176. data/lib/active_support/core_ext/time/acts_like.rb +0 -8
  177. data/lib/active_support/core_ext/time/calculations.rb +0 -282
  178. data/lib/active_support/core_ext/time/conversions.rb +0 -85
  179. data/lib/active_support/core_ext/time/marshal.rb +0 -56
  180. data/lib/active_support/core_ext/time/publicize_conversion_methods.rb +0 -10
  181. data/lib/active_support/core_ext/time/zones.rb +0 -78
  182. data/lib/active_support/core_ext/uri.rb +0 -22
  183. data/lib/active_support/dependencies.rb +0 -628
  184. data/lib/active_support/dependencies/autoload.rb +0 -50
  185. data/lib/active_support/deprecation.rb +0 -18
  186. data/lib/active_support/deprecation/behaviors.rb +0 -38
  187. data/lib/active_support/deprecation/method_wrappers.rb +0 -29
  188. data/lib/active_support/deprecation/proxy_wrappers.rb +0 -74
  189. data/lib/active_support/deprecation/reporting.rb +0 -56
  190. data/lib/active_support/duration.rb +0 -105
  191. data/lib/active_support/gzip.rb +0 -25
  192. data/lib/active_support/hash_with_indifferent_access.rb +0 -145
  193. data/lib/active_support/i18n.rb +0 -8
  194. data/lib/active_support/inflections.rb +0 -56
  195. data/lib/active_support/inflector.rb +0 -7
  196. data/lib/active_support/inflector/inflections.rb +0 -211
  197. data/lib/active_support/inflector/methods.rb +0 -141
  198. data/lib/active_support/inflector/transliterate.rb +0 -97
  199. data/lib/active_support/json.rb +0 -2
  200. data/lib/active_support/json/backends/jsongem.rb +0 -43
  201. data/lib/active_support/json/backends/yajl.rb +0 -40
  202. data/lib/active_support/json/backends/yaml.rb +0 -90
  203. data/lib/active_support/json/decoding.rb +0 -51
  204. data/lib/active_support/json/encoding.rb +0 -254
  205. data/lib/active_support/json/variable.rb +0 -11
  206. data/lib/active_support/lazy_load_hooks.rb +0 -27
  207. data/lib/active_support/locale/en.yml +0 -36
  208. data/lib/active_support/memoizable.rb +0 -103
  209. data/lib/active_support/message_encryptor.rb +0 -71
  210. data/lib/active_support/message_verifier.rb +0 -62
  211. data/lib/active_support/multibyte.rb +0 -44
  212. data/lib/active_support/multibyte/chars.rb +0 -480
  213. data/lib/active_support/multibyte/exceptions.rb +0 -8
  214. data/lib/active_support/multibyte/unicode.rb +0 -393
  215. data/lib/active_support/multibyte/utils.rb +0 -60
  216. data/lib/active_support/notifications.rb +0 -81
  217. data/lib/active_support/notifications/fanout.rb +0 -93
  218. data/lib/active_support/notifications/instrumenter.rb +0 -56
  219. data/lib/active_support/option_merger.rb +0 -25
  220. data/lib/active_support/ordered_hash.rb +0 -158
  221. data/lib/active_support/ordered_options.rb +0 -27
  222. data/lib/active_support/railtie.rb +0 -100
  223. data/lib/active_support/rescuable.rb +0 -114
  224. data/lib/active_support/ruby/shim.rb +0 -22
  225. data/lib/active_support/secure_random.rb +0 -199
  226. data/lib/active_support/string_inquirer.rb +0 -21
  227. data/lib/active_support/test_case.rb +0 -42
  228. data/lib/active_support/testing/assertions.rb +0 -82
  229. data/lib/active_support/testing/declarative.rb +0 -40
  230. data/lib/active_support/testing/default.rb +0 -9
  231. data/lib/active_support/testing/deprecation.rb +0 -55
  232. data/lib/active_support/testing/isolation.rb +0 -154
  233. data/lib/active_support/testing/pending.rb +0 -48
  234. data/lib/active_support/testing/performance.rb +0 -455
  235. data/lib/active_support/testing/setup_and_teardown.rb +0 -111
  236. data/lib/active_support/time.rb +0 -34
  237. data/lib/active_support/time/autoload.rb +0 -5
  238. data/lib/active_support/time_with_zone.rb +0 -341
  239. data/lib/active_support/values/time_zone.rb +0 -377
  240. data/lib/active_support/values/unicode_tables.dat +0 -0
  241. data/lib/active_support/version.rb +0 -10
  242. data/lib/active_support/whiny_nil.rb +0 -60
  243. data/lib/active_support/xml_mini.rb +0 -158
  244. data/lib/active_support/xml_mini/jdom.rb +0 -168
  245. data/lib/active_support/xml_mini/libxml.rb +0 -80
  246. data/lib/active_support/xml_mini/libxmlsax.rb +0 -85
  247. data/lib/active_support/xml_mini/nokogiri.rb +0 -78
  248. data/lib/active_support/xml_mini/nokogirisax.rb +0 -83
  249. data/lib/active_support/xml_mini/rexml.rb +0 -129
  250. data/lib/csd/extensions/core/file.rb +0 -14
  251. data/lib/csd/global_open_struct.rb +0 -19
  252. data/lib/csd/path.rb +0 -32
  253. data/lib/csd/ui.rb +0 -2
  254. data/lib/csd/ui/cli.rb +0 -8
  255. data/lib/csd/ui/ui.rb +0 -45
  256. data/lib/term/ansicolor.rb +0 -102
  257. data/lib/term/ansicolor/.keep +0 -0
  258. data/lib/term/ansicolor/version.rb +0 -10
@@ -1,78 +0,0 @@
1
- require 'nokogiri'
2
- require 'active_support/core_ext/object/blank'
3
-
4
- # = XmlMini Nokogiri implementation
5
- module ActiveSupport
6
- module XmlMini_Nokogiri #:nodoc:
7
- extend self
8
-
9
- # Parse an XML Document string or IO into a simple hash using libxml / nokogiri.
10
- # data::
11
- # XML Document string or IO to parse
12
- def parse(data)
13
- if !data.respond_to?(:read)
14
- data = StringIO.new(data || '')
15
- end
16
-
17
- char = data.getc
18
- if char.nil?
19
- {}
20
- else
21
- data.ungetc(char)
22
- doc = Nokogiri::XML(data)
23
- raise doc.errors.first if doc.errors.length > 0
24
- doc.to_hash
25
- end
26
- end
27
-
28
- module Conversions #:nodoc:
29
- module Document #:nodoc:
30
- def to_hash
31
- root.to_hash
32
- end
33
- end
34
-
35
- module Node #:nodoc:
36
- CONTENT_ROOT = '__content__'.freeze
37
-
38
- # Convert XML document to hash
39
- #
40
- # hash::
41
- # Hash to merge the converted element into.
42
- def to_hash(hash={})
43
- node_hash = {}
44
-
45
- # Insert node hash into parent hash correctly.
46
- case hash[name]
47
- when Array then hash[name] << node_hash
48
- when Hash then hash[name] = [hash[name], node_hash]
49
- when nil then hash[name] = node_hash
50
- end
51
-
52
- # Handle child elements
53
- children.each do |c|
54
- if c.element?
55
- c.to_hash(node_hash)
56
- elsif c.text? || c.cdata?
57
- node_hash[CONTENT_ROOT] ||= ''
58
- node_hash[CONTENT_ROOT] << c.content
59
- end
60
- end
61
-
62
- # Remove content node if it is blank and there are child tags
63
- if node_hash.length > 1 && node_hash[CONTENT_ROOT].blank?
64
- node_hash.delete(CONTENT_ROOT)
65
- end
66
-
67
- # Handle attributes
68
- attribute_nodes.each { |a| node_hash[a.node_name] = a.value }
69
-
70
- hash
71
- end
72
- end
73
- end
74
-
75
- Nokogiri::XML::Document.send(:include, Conversions::Document)
76
- Nokogiri::XML::Node.send(:include, Conversions::Node)
77
- end
78
- end
@@ -1,83 +0,0 @@
1
- require 'nokogiri'
2
- require 'active_support/core_ext/object/blank'
3
-
4
- # = XmlMini Nokogiri implementation using a SAX-based parser
5
- module ActiveSupport
6
- module XmlMini_NokogiriSAX
7
- extend self
8
-
9
- # Class that will build the hash while the XML document
10
- # is being parsed using SAX events.
11
- class HashBuilder < Nokogiri::XML::SAX::Document
12
-
13
- CONTENT_KEY = '__content__'.freeze
14
- HASH_SIZE_KEY = '__hash_size__'.freeze
15
-
16
- attr_reader :hash
17
-
18
- def current_hash
19
- @hash_stack.last
20
- end
21
-
22
- def start_document
23
- @hash = {}
24
- @hash_stack = [@hash]
25
- end
26
-
27
- def end_document
28
- raise "Parse stack not empty!" if @hash_stack.size > 1
29
- end
30
-
31
- def error(error_message)
32
- raise error_message
33
- end
34
-
35
- def start_element(name, attrs = [])
36
- new_hash = { CONTENT_KEY => '' }
37
- new_hash[attrs.shift] = attrs.shift while attrs.length > 0
38
- new_hash[HASH_SIZE_KEY] = new_hash.size + 1
39
-
40
- case current_hash[name]
41
- when Array then current_hash[name] << new_hash
42
- when Hash then current_hash[name] = [current_hash[name], new_hash]
43
- when nil then current_hash[name] = new_hash
44
- end
45
-
46
- @hash_stack.push(new_hash)
47
- end
48
-
49
- def end_element(name)
50
- if current_hash.length > current_hash.delete(HASH_SIZE_KEY) && current_hash[CONTENT_KEY].blank? || current_hash[CONTENT_KEY] == ''
51
- current_hash.delete(CONTENT_KEY)
52
- end
53
- @hash_stack.pop
54
- end
55
-
56
- def characters(string)
57
- current_hash[CONTENT_KEY] << string
58
- end
59
-
60
- alias_method :cdata_block, :characters
61
- end
62
-
63
- attr_accessor :document_class
64
- self.document_class = HashBuilder
65
-
66
- def parse(data)
67
- if !data.respond_to?(:read)
68
- data = StringIO.new(data || '')
69
- end
70
-
71
- char = data.getc
72
- if char.nil?
73
- {}
74
- else
75
- data.ungetc(char)
76
- document = self.document_class.new
77
- parser = Nokogiri::XML::SAX::Parser.new(document)
78
- parser.parse(data)
79
- document.hash
80
- end
81
- end
82
- end
83
- end
@@ -1,129 +0,0 @@
1
- require 'active_support/core_ext/kernel/reporting'
2
- require 'active_support/core_ext/object/blank'
3
-
4
- # = XmlMini ReXML implementation
5
- module ActiveSupport
6
- module XmlMini_REXML #:nodoc:
7
- extend self
8
-
9
- CONTENT_KEY = '__content__'.freeze
10
-
11
- # Parse an XML Document string or IO into a simple hash
12
- #
13
- # Same as XmlSimple::xml_in but doesn't shoot itself in the foot,
14
- # and uses the defaults from ActiveSupport
15
- #
16
- # data::
17
- # XML Document string or IO to parse
18
- def parse(data)
19
- if !data.respond_to?(:read)
20
- data = StringIO.new(data || '')
21
- end
22
-
23
- char = data.getc
24
- if char.nil?
25
- {}
26
- else
27
- data.ungetc(char)
28
- silence_warnings { require 'rexml/document' } unless defined?(REXML::Document)
29
- doc = REXML::Document.new(data)
30
-
31
- if doc.root
32
- merge_element!({}, doc.root)
33
- else
34
- raise REXML::ParseException,
35
- "The document #{doc.to_s.inspect} does not have a valid root"
36
- end
37
- end
38
- end
39
-
40
- private
41
- # Convert an XML element and merge into the hash
42
- #
43
- # hash::
44
- # Hash to merge the converted element into.
45
- # element::
46
- # XML element to merge into hash
47
- def merge_element!(hash, element)
48
- merge!(hash, element.name, collapse(element))
49
- end
50
-
51
- # Actually converts an XML document element into a data structure.
52
- #
53
- # element::
54
- # The document element to be collapsed.
55
- def collapse(element)
56
- hash = get_attributes(element)
57
-
58
- if element.has_elements?
59
- element.each_element {|child| merge_element!(hash, child) }
60
- merge_texts!(hash, element) unless empty_content?(element)
61
- hash
62
- else
63
- merge_texts!(hash, element)
64
- end
65
- end
66
-
67
- # Merge all the texts of an element into the hash
68
- #
69
- # hash::
70
- # Hash to add the converted element to.
71
- # element::
72
- # XML element whose texts are to me merged into the hash
73
- def merge_texts!(hash, element)
74
- unless element.has_text?
75
- hash
76
- else
77
- # must use value to prevent double-escaping
78
- texts = ''
79
- element.texts.each { |t| texts << t.value }
80
- merge!(hash, CONTENT_KEY, texts)
81
- end
82
- end
83
-
84
- # Adds a new key/value pair to an existing Hash. If the key to be added
85
- # already exists and the existing value associated with key is not
86
- # an Array, it will be wrapped in an Array. Then the new value is
87
- # appended to that Array.
88
- #
89
- # hash::
90
- # Hash to add key/value pair to.
91
- # key::
92
- # Key to be added.
93
- # value::
94
- # Value to be associated with key.
95
- def merge!(hash, key, value)
96
- if hash.has_key?(key)
97
- if hash[key].instance_of?(Array)
98
- hash[key] << value
99
- else
100
- hash[key] = [hash[key], value]
101
- end
102
- elsif value.instance_of?(Array)
103
- hash[key] = [value]
104
- else
105
- hash[key] = value
106
- end
107
- hash
108
- end
109
-
110
- # Converts the attributes array of an XML element into a hash.
111
- # Returns an empty Hash if node has no attributes.
112
- #
113
- # element::
114
- # XML element to extract attributes from.
115
- def get_attributes(element)
116
- attributes = {}
117
- element.attributes.each { |n,v| attributes[n] = v }
118
- attributes
119
- end
120
-
121
- # Determines if a document element has text content
122
- #
123
- # element::
124
- # XML element to be checked.
125
- def empty_content?(element)
126
- element.texts.join.blank?
127
- end
128
- end
129
- end
@@ -1,14 +0,0 @@
1
- # encoding: utf-8
2
- module CSD
3
- module Extensions
4
- module Core
5
- module File
6
-
7
- end
8
- end
9
- end
10
- end
11
-
12
- class File #:nodoc:
13
- extend CSD::Extensions::Core::File
14
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
- module CSD
3
- class GlobalOpenStruct
4
-
5
- def self.method_missing(meth, *args, &block)
6
- if meth.to_s.ends_with?('=')
7
- class_variable_set("@@#{meth.to_s.chop}".to_sym, *args)
8
- else
9
- begin
10
- class_variable_get("@@#{meth}".to_sym)
11
- rescue NameError => e
12
- #UI.debug "The option `#{meth}´ was accessed but not available." # FIXME: This line causes a recursion error :)
13
- nil
14
- end
15
- end
16
- end
17
-
18
- end
19
- end
@@ -1,32 +0,0 @@
1
- # encoding: utf-8
2
- require File.join(File.dirname(__FILE__), 'global_open_struct')
3
-
4
- module CSD
5
- class Path < GlobalOpenStruct
6
-
7
- def self.root
8
- @@root ||= Dir.pwd
9
- end
10
-
11
- def self.root=(path)
12
- @@root = path
13
- end
14
-
15
- def self.gem
16
- @@gem ||= File.expand_path(File.join(File.dirname(__FILE__), '..' ,'..'))
17
- end
18
-
19
- def self.vendor
20
- @@vendor ||= File.join(gem, 'vendor')
21
- end
22
-
23
- def self.applications
24
- @@applications ||= File.expand_path(File.join(gem, 'lib', 'csd', 'application'))
25
- end
26
-
27
- def self.applications=(path)
28
- @@applications = File.expand_path(path)
29
- end
30
-
31
- end
32
- end
@@ -1,2 +0,0 @@
1
- # encoding: utf-8
2
- Dir.glob(File.join(File.dirname(__FILE__), 'ui', '*.rb')) { |file| require file }
@@ -1,8 +0,0 @@
1
- # encoding: utf-8
2
- require File.join(File.dirname(__FILE__), 'ui')
3
-
4
- module CSD
5
- class CLI < UI
6
-
7
- end
8
- end
@@ -1,45 +0,0 @@
1
- # encoding: utf-8
2
- module CSD
3
- class UI
4
-
5
- include Gem::UserInteraction
6
-
7
- # These are all possible user interactions provided by the UI
8
- #
9
- INTERACTIONS = %w{ separator debug info warn error ask ask_yes_no die }
10
-
11
- def separator
12
- say
13
- end
14
-
15
- def debug(message)
16
- say "DEBUG: #{message}".magenta if Options.debug and !Options.silent
17
- end
18
-
19
- def info(message)
20
- say message if !Options.silent
21
- end
22
-
23
- def warn(message)
24
- say 'NOTE: '.red + message.red if !Options.silent
25
- end
26
-
27
- def error(message)
28
- say('ERROR: '.red.blink + message.red) if !Options.silent
29
- end
30
-
31
- def die(message)
32
- say('ERROR: '.red.blink + message.red) if !Options.silent
33
- abort
34
- end
35
-
36
- protected
37
-
38
- # This is just a convenience wrapper so that +UI.myinteraction+ will map to +CSD.ui.myinteraction+
39
- #
40
- def self.method_missing(meth, *args, &block)
41
- INTERACTIONS.include?(meth.to_s) ? CSD.ui.send(meth.to_sym, *args, &block) : super
42
- end
43
-
44
- end
45
- end
@@ -1,102 +0,0 @@
1
- require 'term/ansicolor/version'
2
-
3
- module Term
4
- # The ANSIColor module can be used for namespacing and mixed into your own
5
- # classes.
6
- module ANSIColor
7
- # :stopdoc:
8
- ATTRIBUTES = [
9
- [ :clear , 0 ],
10
- [ :reset , 0 ], # synonym for :clear
11
- [ :bold , 1 ],
12
- [ :dark , 2 ],
13
- [ :italic , 3 ], # not widely implemented
14
- [ :underline , 4 ],
15
- [ :underscore , 4 ], # synonym for :underline
16
- [ :blink , 5 ],
17
- [ :rapid_blink , 6 ], # not widely implemented
18
- [ :negative , 7 ], # no reverse because of String#reverse
19
- [ :concealed , 8 ],
20
- [ :strikethrough, 9 ], # not widely implemented
21
- [ :black , 30 ],
22
- [ :red , 31 ],
23
- [ :green , 32 ],
24
- [ :yellow , 33 ],
25
- [ :blue , 34 ],
26
- [ :magenta , 35 ],
27
- [ :cyan , 36 ],
28
- [ :white , 37 ],
29
- [ :on_black , 40 ],
30
- [ :on_red , 41 ],
31
- [ :on_green , 42 ],
32
- [ :on_yellow , 43 ],
33
- [ :on_blue , 44 ],
34
- [ :on_magenta , 45 ],
35
- [ :on_cyan , 46 ],
36
- [ :on_white , 47 ],
37
- ]
38
-
39
- ATTRIBUTE_NAMES = ATTRIBUTES.transpose.first
40
- # :startdoc:
41
-
42
- # Returns true, if the coloring function of this module
43
- # is switched on, false otherwise.
44
- def self.coloring?
45
- @coloring
46
- end
47
-
48
- # Turns the coloring on or off globally, so you can easily do
49
- # this for example:
50
- # Term::ANSIColor::coloring = STDOUT.isatty
51
- def self.coloring=(val)
52
- @coloring = val
53
- end
54
- self.coloring = true
55
-
56
- ATTRIBUTES.each do |c, v|
57
- eval %Q{
58
- def #{c}(string = nil)
59
- result = ''
60
- result << "\e[#{v}m" if Term::ANSIColor.coloring?
61
- if block_given?
62
- result << yield
63
- elsif string
64
- result << string
65
- elsif respond_to?(:to_str)
66
- result << to_str
67
- else
68
- return result #only switch on
69
- end
70
- result << "\e[0m" if Term::ANSIColor.coloring?
71
- result
72
- end
73
- }
74
- end
75
-
76
- # Regular expression that is used to scan for ANSI-sequences while
77
- # uncoloring strings.
78
- COLORED_REGEXP = /\e\[(?:[34][0-7]|[0-9])?m/
79
-
80
- # Returns an uncolored version of the string, that is all
81
- # ANSI-sequences are stripped from the string.
82
- def uncolored(string = nil) # :yields:
83
- if block_given?
84
- yield.gsub(COLORED_REGEXP, '')
85
- elsif string
86
- string.gsub(COLORED_REGEXP, '')
87
- elsif respond_to?(:to_str)
88
- to_str.gsub(COLORED_REGEXP, '')
89
- else
90
- ''
91
- end
92
- end
93
-
94
- module_function
95
-
96
- # Returns an array of all Term::ANSIColor attributes as symbols.
97
- def attributes
98
- ATTRIBUTE_NAMES
99
- end
100
- extend self
101
- end
102
- end