continuent-tools-core 0.1.6 → 0.5.0

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.
data/lib/tungsten/util.rb CHANGED
@@ -32,7 +32,7 @@ class TungstenUtil
32
32
  arguments = arguments.map{|arg|
33
33
  newarg = ''
34
34
  arg.split("").each{|b|
35
- unless b.getbyte(0)<33 || b.getbyte(0)>127 then
35
+ unless b.getbyte(0)<32 || b.getbyte(0)>127 then
36
36
  newarg.concat(b)
37
37
  end
38
38
  }
@@ -533,4 +533,97 @@ class TungstenUtil
533
533
  singular
534
534
  end
535
535
  end
536
+
537
+ # Read an INI file and return a hash of the arguments for each section
538
+ def parse_ini_file(file, convert_to_hash = true)
539
+ unless defined?(IniParse)
540
+ require 'tungsten/iniparse'
541
+ end
542
+
543
+ unless File.exists?(file)
544
+ return
545
+ end
546
+
547
+ # Read each section and turn the lines into an array of arguments as
548
+ # they would appear in the INI file
549
+ options = {}
550
+ ini = IniParse.open(file)
551
+ ini.each{
552
+ |section|
553
+ key = section.key
554
+
555
+ # Initialize the array only if it doesn't exist
556
+ # Doing otherwise would overwrite old sections
557
+ unless options.has_key?(key)
558
+ options[key] = []
559
+ end
560
+
561
+ section.each{
562
+ |line|
563
+ unless line.is_a?(Array)
564
+ values = [line]
565
+ else
566
+ values = line
567
+ end
568
+
569
+ values.each{
570
+ |value|
571
+ if value.value == nil
572
+ options[key] << "#{value.key}"
573
+ else
574
+ options[key] << "#{value.key}=#{value.value.to_s()}"
575
+ end
576
+ }
577
+ }
578
+ }
579
+
580
+ # Most users will want a Hash, but this will allow the main
581
+ # TungstenScript class to see the parameters in order
582
+ if convert_to_hash == true
583
+ return convert_ini_array_to_hash(options)
584
+ else
585
+ return options
586
+ end
587
+ end
588
+
589
+ # Convert the information returned by parse_ini_file into a
590
+ # nested hash of values
591
+ def convert_ini_array_to_hash(options)
592
+ hash = {}
593
+
594
+ options.each{
595
+ |section,lines|
596
+ unless hash.has_key?(section)
597
+ hash[section] = {}
598
+ end
599
+
600
+ lines.each{
601
+ |line|
602
+ parts = line.split("=")
603
+
604
+ # The first part is the argument name
605
+ argument = parts.shift()
606
+ # Any remaining values will be returned as a single string
607
+ # A nil value means there was no value after the '='
608
+ if parts.size() == 0
609
+ v = nil
610
+ else
611
+ v = parts.join("=")
612
+ end
613
+
614
+ # Return repeat arguments as an array of values
615
+ if hash[section].has_key?(argument)
616
+ unless hash[section][argument].is_a?(Array)
617
+ hash[section][argument] = [hash[section][argument]]
618
+ end
619
+
620
+ hash[section][argument] << v
621
+ else
622
+ hash[section][argument] = v
623
+ end
624
+ }
625
+ }
626
+
627
+ return hash
628
+ end
536
629
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: continuent-tools-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Continuent
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-18 00:00:00.000000000 Z
11
+ date: 2014-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json_pure
@@ -117,9 +117,17 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - bin/tungsten_create_load
119
119
  - lib/continuent-tools-core.rb
120
+ - lib/iniparse/document.rb
121
+ - lib/iniparse/generator.rb
122
+ - lib/iniparse/LICENSE
123
+ - lib/iniparse/line_collection.rb
124
+ - lib/iniparse/lines.rb
125
+ - lib/iniparse/parser.rb
126
+ - lib/iniparse.rb
120
127
  - lib/tungsten/api.rb
121
128
  - lib/tungsten/common.rb
122
129
  - lib/tungsten/exec.rb
130
+ - lib/tungsten/iniparse.rb
123
131
  - lib/tungsten/install.rb
124
132
  - lib/tungsten/properties.rb
125
133
  - lib/tungsten/README
@@ -149,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
157
  version: '0'
150
158
  requirements: []
151
159
  rubyforge_project:
152
- rubygems_version: 2.0.3
160
+ rubygems_version: 2.0.14
153
161
  signing_key:
154
162
  specification_version: 4
155
163
  summary: Continuent Tungsten tools core functions