remi 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 46611d84305353596aa2b69083c10515284f38fc
4
+ data.tar.gz: 455d0e91952b3d0a4961733ce3ee47c9baa6b10f
5
+ SHA512:
6
+ metadata.gz: 1ae4ff9142e4e0e856887e6b14922b43f224a4cfc759d70389f6cc09e724afddd73c8fed24d30bac4ea635087a8bc52af9fea58643a32015f3081dbea34b987b
7
+ data.tar.gz: fa19b1adbde11aa26792ca1b772540595218e847b69db5cc7c86f70db71d478c82660935b9df223fab0feec560fdb64bb8e1f7013c6bff29343a651f1ba9c789
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ *~
2
+ /.ruby-version
3
+ /.ruby-gemset
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # Remi
2
+ ## Ruby Extract Modify and Integrate
3
+
4
+ Something like SAS, but better.
data/lib/noodling.rb ADDED
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/ruby
2
+
3
+ =begin
4
+ * Think about a class structure for rows and fields
5
+ * Read a csv, and create a set of fields (with user-extensible metadata)
6
+ * Populate those fields from the csv file and define some sort of
7
+ serialization method that could write out blocks of data to a dataset
8
+ (that would hold the metadata in it)
9
+ * Dataset class needs block methods to loop over rows
10
+ * With group-by style first.dot last.dot processing and retain functionality
11
+ (don't do lag, but do have a retain function - perhaps retain is the default
12
+ for block variables)
13
+ * Hash lookups
14
+ * Build and process sub-datasets ? that might be cool!
15
+
16
+
17
+ =end
18
+
19
+
20
+ def datastep(dataset)
21
+
22
+ end
23
+
24
+ # I think I need a variable class too
25
+ # then I could define an assignment operator for that
26
+
27
+ class Dataset
28
+
29
+ def initialize
30
+ @variables = {}
31
+ @row = {} # I do want row to be an array, but use a has for the moment
32
+ # or maybe not, maybe I just want the data output to file to be array, internally it can be a hash
33
+ end
34
+
35
+ def add_variable(varname,varmeta)
36
+
37
+ tmpvarlist = @variables.merge({ varname => varmeta })
38
+
39
+ if not tmpvarlist[varname].has_key?(:type)
40
+ raise ":type not defined for variable #{varname}"
41
+ end
42
+
43
+ @variables = tmpvarlist
44
+ @row[varname] = nil
45
+
46
+ end
47
+
48
+ def []=(varname,value)
49
+ if @row.has_key?(varname)
50
+ @row[varname] = value
51
+ else
52
+ raise "Variable '#{varname}' not defined"
53
+ end
54
+ end
55
+
56
+ def [](varname)
57
+ @row[varname]
58
+ end
59
+
60
+ def output
61
+
62
+ printf "|"
63
+ @row.each do |key,value|
64
+ printf "#{key}=#{value}|"
65
+ end
66
+ printf "\n"
67
+
68
+ # puts "#{@row.inspect}"
69
+ end
70
+
71
+ end
72
+
73
+ mydata = Dataset.new()
74
+
75
+ mydata.add_variable(:n, { :type => "num" })
76
+ mydata.add_variable(:retailer_id, { :type => "string", :length => 40 })
77
+
78
+ for num in 1..3
79
+ mydata[:n] = num
80
+ mydata[:retailer_id] = "R#{mydata[:n]}"
81
+ mydata.output
82
+ end
83
+
84
+ # want to do someting like this
85
+ # the datastep is what opens and closes the files
86
+ # It also advances through the datastep
87
+ # It also does an automatic "output" unless disabled
88
+ =begin
89
+
90
+ datastep mydata do |d1|
91
+
92
+ d1.add_variable({:msg => {:type => :string, :length => 20}})
93
+
94
+ for num in 1..3
95
+ d1.var(:msg) = "Hello #{num}"
96
+ d1.output
97
+ end
98
+
99
+ end
100
+
101
+
102
+ =end
103
+
104
+ =begin
105
+
106
+ class Dataset
107
+
108
+ def initialize(columns)
109
+ @columns = columns
110
+ @row = []
111
+ @position = 0
112
+ @file = ""
113
+ end
114
+
115
+ def add_column
116
+ end
117
+
118
+ def output
119
+ end
120
+
121
+ columns = {}
122
+
123
+ def show_columns
124
+
125
+
126
+ if block_given?
127
+ @columns.each do |key,val|
128
+ yield val
129
+ end
130
+ end
131
+
132
+ @columns.values if not block_given?
133
+
134
+ end
135
+
136
+
137
+
138
+ end
139
+
140
+
141
+ mydata = Dataset.new({
142
+ 1 => "distributor_id",
143
+ 2 => "retailer_id",
144
+ 3 => "physical_cases"
145
+ });
146
+
147
+ puts mydata.inspect
148
+
149
+
150
+ mydata.show_columns do |f|
151
+ puts f
152
+ end
153
+
154
+ x = mydata.show_columns
155
+ puts "x = #{x.inspect}"
156
+
157
+ =begin
158
+ data mydata;
159
+ set input_set;
160
+
161
+ x = x**2;
162
+ run;
163
+ =end
File without changes
data/lib/remi.rb ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/ruby
2
+
3
+ class Hola
4
+ def self.hi
5
+ puts "Hello world!"
6
+ end
7
+ def self.bye
8
+ puts "Goodbye, cruel world!"
9
+ end
10
+ end
11
+
12
+
data/remi.gemspec ADDED
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "remi/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "remi"
7
+ s.version = "0.0.1"
8
+ s.authors = ["Sterling Paramore"]
9
+ s.email = ["gnilrets@gmail.com"]
10
+ s.homepage = "https://github.com/gnilrets"
11
+ s.license = "Apache-2.0"
12
+ s.summary = "Remi (Ruby Extract Modify and Integrate)"
13
+ s.description = "Data manipulation in Ruby"
14
+
15
+ s.rubyforge_project = "Remi"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ end
data/test/test_NAME.rb ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'test/unit'
4
+
5
+ class MyUnitTests < Test::Unit::TestCase
6
+
7
+ def setup
8
+ puts "setup!"
9
+ end
10
+
11
+ def teardown
12
+ puts "teardown!"
13
+ end
14
+
15
+ def test_basic
16
+ puts "I RAN!"
17
+ end
18
+
19
+ end
metadata ADDED
@@ -0,0 +1,52 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: remi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sterling Paramore
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Data manipulation in Ruby
14
+ email:
15
+ - gnilrets@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - .gitignore
21
+ - README.md
22
+ - lib/noodling.rb
23
+ - lib/remi.rb
24
+ - lib/remi/version.rb
25
+ - remi.gemspec
26
+ - test/test_NAME.rb
27
+ homepage: https://github.com/gnilrets
28
+ licenses:
29
+ - Apache-2.0
30
+ metadata: {}
31
+ post_install_message:
32
+ rdoc_options: []
33
+ require_paths:
34
+ - lib
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ requirements: []
46
+ rubyforge_project: Remi
47
+ rubygems_version: 2.2.1
48
+ signing_key:
49
+ specification_version: 4
50
+ summary: Remi (Ruby Extract Modify and Integrate)
51
+ test_files:
52
+ - test/test_NAME.rb