continuent-tools-core 0.1.6 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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