mushin 0.0.0.pre94 → 0.1.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.
@@ -0,0 +1,38 @@
1
+ require 'wongi-engine'
2
+
3
+ include Wongi::Engine
4
+
5
+ @ds = Network.new
6
+
7
+ person = Hash.new
8
+ person[:name] = "mohamed"
9
+ person[:age] = "31"
10
+
11
+
12
+ def all
13
+ # puts "Enumerate all:"
14
+ #@ds.each do |wme|
15
+ # puts wme
16
+ #end
17
+ end
18
+
19
+ #puts "Mismatching pattern:"
20
+ #@ds.each :_, "foe", :_ do |wme|
21
+ # puts wme
22
+ #ekd
23
+
24
+ #{:subject=>{:name=>"mohamed", :age=>"31"}, :predicate=>"friend", :object=>"Bob"}
25
+ def run subject, predicate, object
26
+ @ds << WME.new( subject, predicate, object)
27
+
28
+ #puts "Enumerate by pattern:"
29
+ @ds.each do |wme|
30
+ #ds.each :_, "friend", :_ do |wme|
31
+ puts wme
32
+ puts wme.to_h #methods
33
+ puts "use MushinFrameworkName::MiddlewareName, opts, params #{wme.to_h[:subject]}"
34
+ end
35
+ end
36
+
37
+ run person, "mypredicate", Random.new_seed
38
+ run person, "mypredicate", Random.new_seed
data/lib/mushin.rb CHANGED
@@ -1 +1,20 @@
1
- require 'mushin/base'
1
+ #require_relative './internals/env'
2
+ #require_relative './internals/engine'
3
+ #require_relative './internals/book'
4
+
5
+ require 'middleware'
6
+ require 'logger'
7
+ $logger = Logger.new(STDOUT)
8
+
9
+
10
+ module Mushin
11
+ VERSION = "0.1.0"
12
+ class Stack < Middleware::Builder
13
+ def initialize &block
14
+ # let's use `super` to instance_eval inside Middleware::Builder scope
15
+ super
16
+ # Run it!
17
+ call
18
+ end
19
+ end
20
+ end
data/mushin.gemspec ADDED
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ p lib
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+
6
+ require_relative "lib/mushin"
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "mushin"
10
+ spec.version = Mushin::VERSION
11
+ spec.authors = ["zotherstupidguy"]
12
+ spec.email = ["zotherstupidguy@gmail.com"]
13
+
14
+ spec.summary = %q{Mushin is a Domain-specific Frameworks Generator.}
15
+ spec.description = %q{Mushin is a Domain-specific Frameworks Generator}
16
+ spec.homepage = "http://mushin-rb.github.io/"
17
+ spec.license = "MIT"
18
+
19
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
20
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
21
+ #if spec.respond_to?(:metadata)
22
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
23
+ #else
24
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
25
+ #end
26
+
27
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_development_dependency "bundler", "~> 1.12"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ spec.add_development_dependency "minitest", "~> 5.0"
35
+
36
+ spec.add_development_dependency "ibsciss-middleware", "~> 0.3"
37
+ spec.add_runtime_dependency "ibsciss-middleware", "~> 0.3"
38
+
39
+ #TODO http://guides.rubygems.org/security/
40
+ end
metadata CHANGED
@@ -1,34 +1,114 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mushin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.pre94
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - theotherstupidguy
7
+ - zotherstupidguy
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2014-10-21 00:00:00.000000000 Z
12
- dependencies: []
13
- description: In the beginner’s mind there are many possibilities, in the expert’s
14
- mind there are few!
15
- email: theotherstupidguy@gmail.com
16
- executables:
17
- - mushin
11
+ date: 2016-10-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ibsciss-middleware
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ibsciss-middleware
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.3'
83
+ description: Mushin is a Domain-specific Frameworks Generator
84
+ email:
85
+ - zotherstupidguy@gmail.com
86
+ executables: []
18
87
  extensions: []
19
88
  extra_rdoc_files: []
20
89
  files:
21
- - bin/mushin
90
+ - CODE_OF_CONDUCT.md
91
+ - Gemfile
92
+ - Gemfile.lock
93
+ - LICENSE.txt
94
+ - README.md
95
+ - Rakefile
96
+ - bin/console
97
+ - bin/setup
98
+ - lib/internals/book.rb
99
+ - lib/internals/ds/ds.rb
100
+ - lib/internals/ds/redis.rb
101
+ - lib/internals/ds/secure_ds.rb
102
+ - lib/internals/engine.rb
103
+ - lib/internals/env.rb
104
+ - lib/internals/wongi.rb
22
105
  - lib/mushin.rb
23
- - lib/mushin/base.rb
24
- - lib/mushin/middleware/builder.rb
25
- - lib/mushin/middleware/runner.rb
106
+ - mushin.gemspec
26
107
  homepage: http://mushin-rb.github.io/
27
108
  licenses:
28
109
  - MIT
29
110
  metadata: {}
30
- post_install_message: "\n\n \"Mushin is kinda Awesome, please ENJOY!\" \n \t\t ~
31
- theotherstupidguy :)\n\n"
111
+ post_install_message:
32
112
  rdoc_options: []
33
113
  require_paths:
34
114
  - lib
@@ -39,13 +119,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
39
119
  version: '0'
40
120
  required_rubygems_version: !ruby/object:Gem::Requirement
41
121
  requirements:
42
- - - ">"
122
+ - - ">="
43
123
  - !ruby/object:Gem::Version
44
- version: 1.3.1
124
+ version: '0'
45
125
  requirements: []
46
126
  rubyforge_project:
47
- rubygems_version: 2.4.1
127
+ rubygems_version: 2.6.7
48
128
  signing_key:
49
129
  specification_version: 4
50
- summary: a ruby experiment
130
+ summary: Mushin is a Domain-specific Frameworks Generator.
51
131
  test_files: []
data/bin/mushin DELETED
@@ -1,375 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'find'
3
- require 'fileutils'
4
- require 'optparse'
5
-
6
- subtext = <<HELP
7
- _ _
8
- _ __ ___ _ _ ___| |__ (_)_ __
9
- | '_ ` _ \\| | | / __| '_ \\| | '_ \\
10
- | | | | | | |_| \\__ \\ | | | | | | |
11
- |_| |_| |_|\\__,_|___/_| |_|_|_| |_|
12
-
13
-
14
-
15
- Usage: mushin [command] [options]
16
-
17
- Commonly used command are:
18
- setup : generats mushin setup.rb i.e. rubygems & github authentications
19
- roll : roll your own framework
20
- share : share your framework on rubygems.org
21
- clean : clean out generated 0.0.0.pre1 gems
22
-
23
- HELP
24
-
25
- global = OptionParser.new do |opts|
26
- opts.banner = " 'In the beginner's mind there are many possibilities, in the expert's mind there are few!' "
27
- opts.separator ""
28
- opts.separator subtext
29
- end
30
- global.order!
31
- command = ARGV.shift
32
-
33
- case command
34
-
35
- when "setup"
36
- p "generating mushin's setup.rb "
37
- @framework = ARGV[0]
38
- df = File.new("setup.rb", "w")
39
- df.puts("Mushin[:framework] = '#{@framework.capitalize}'")
40
- df.puts("Mushin[:author] = ''")
41
- df.puts("Mushin[:email] = ''")
42
- df.puts("Mushin[:license] = ''")
43
- df.puts("Mushin[:desc] = ''")
44
- df.puts("Mushin[:website] = ''")
45
-
46
- df.puts("Mushin[:ds_summary] = ''")
47
- df.puts("Mushin[:ds_desc] = ''")
48
-
49
- df.close
50
-
51
- when "roll"
52
- module Mushin
53
- class << self
54
- @@configs = {}
55
- def []= key, value
56
- @@configs[key.to_sym] = value
57
- end
58
-
59
- def [] key
60
- @@configs[key.to_sym]
61
- end
62
- end
63
- end
64
- require "#{Dir.pwd}/setup"
65
-
66
- @framework = Mushin[:framework]
67
- p "Framework: #{@framework}"
68
- @author = Mushin[:author]
69
-
70
- # Framework Gem
71
- if File.directory?("#{@framework.downcase}")
72
- FileUtils.remove_dir (Dir::pwd + "/#{@framework.downcase}")
73
- end
74
-
75
- Dir.mkdir(Dir::pwd + "/#{@framework.downcase}")
76
- Dir.mkdir(Dir::pwd + "/#{@framework.downcase}/bin")
77
- Dir.mkdir(Dir::pwd + "/#{@framework.downcase}/lib")
78
- Dir.mkdir(Dir::pwd + "/#{@framework.downcase}/lib/#{@framework.downcase}")
79
- Dir.mkdir(Dir::pwd + "/#{@framework.downcase}/spec")
80
-
81
-
82
- df = File.new("#{@framework.downcase}/bin/#{@framework.downcase}", "w")
83
- df.puts <<-eos
84
- #!/usr/bin/env ruby
85
-
86
- require 'fileutils'
87
- #TODO some input using STDIN.gets.strip to setup the name of the middleware
88
- @name = "SomeName".capitalize
89
- @middleware = '#{@framework.downcase}-' + @name.downcase
90
-
91
- # Generates a #{@framework.capitalize} Middleware Gem
92
- #
93
- if File.directory?(@middleware.downcase)
94
- FileUtils.remove_dir (Dir::pwd + "/" + @middleware.downcase)
95
- end
96
- Dir.mkdir(Dir::pwd + "/" + @middleware.downcase)
97
- Dir.mkdir(Dir::pwd + "/" + @middleware.downcase + "/lib")
98
- Dir.mkdir(Dir::pwd + "/" + @middleware.downcase + "/lib/" + @middleware.downcase)
99
-
100
- df = File.new(@middleware.downcase + "/" + @middleware.downcase + ".gemspec", "w")
101
- df.puts <<-gf
102
- # coding: utf-8
103
- lib = File.expand_path('../lib', __FILE__)
104
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
105
-
106
- Gem::Specification.new do |spec|
107
- spec.name = "\#{@middleware}"
108
- spec.version = "0.0.0.pre1"
109
- spec.authors = ["#{@author}"]
110
- spec.email = ["#{@email}"]
111
- spec.summary = "#{@ds_summary}"
112
- spec.description = "#{@ds_desc}"
113
- spec.homepage = "#{@ds_website}"
114
- spec.license = "#{@license}"
115
-
116
- spec.files = Dir.glob("{lib}/**/*")
117
- spec.require_paths = ["lib"]
118
- end
119
- gf
120
- df.close
121
- df = File.new(@middleware.downcase + "/lib/" + @middleware.downcase + ".rb", "w")
122
- df.puts("require " + "'" + @middleware + "/base" + "'")
123
- df.close
124
-
125
- df = File.new(@middleware.downcase + "/lib/" + @middleware.downcase + "/base.rb", "w")
126
-
127
- df.puts("#{@framework.capitalize}::Env.register do")
128
- df.puts(" #TODO add needed code to #{@framework} Env")
129
- df.puts("end")
130
-
131
- df.puts("module #{@framework.capitalize}")
132
- df.puts(" class \#{@name}")
133
- df.puts(" include #{@framework.capitalize}::Middleware ")
134
- df.puts(" def initialize(app, opts={},params={})")
135
- df.puts(" @app = app")
136
- df.puts(" @opts = opts ")
137
- df.puts(" @params = params")
138
- df.puts(" end")
139
- df.puts(" def call(env)")
140
- df.puts(" #TODO add code here to be executed before calling the next middleware")
141
- df.puts(" @app.call(env) # run the next middleware")
142
- df.puts(" #TODO add code here to be executed after calling the next middleware ")
143
- df.puts(" end")
144
- df.puts(" end")
145
- df.puts("end")
146
- df.close
147
- eos
148
- df.close
149
-
150
- df = File.new("#{@framework.downcase}/lib/#{@framework.downcase}.rb", "w")
151
- df.puts("require '#{@framework.downcase}/base'")
152
- df.close
153
-
154
- df = File.new("#{@framework.downcase}/lib/#{@framework.downcase}/base.rb", "w")
155
- df.puts <<-eos
156
- module #{@framework.capitalize}
157
- module Middleware
158
- include Mushin::Domain::Middleware
159
- end
160
- module DSL
161
- include Mushin::DSL
162
- def self.find activity_context, activity_statment
163
- Mushin::DSL.middlewares = []
164
- Mushin::DSL.contexts.each do |current_context|
165
- if activity_context == current_context.title
166
- current_context.statments.each do |statment|
167
- if activity_statment == statment.title
168
- statment.activations.each do |middleware|
169
- Mushin::DSL.middlewares << middleware
170
- end
171
- end
172
- end
173
- end
174
- end
175
- Mushin::DSL.middlewares
176
- end
177
- end
178
- module Engine
179
- extend Mushin::Engine
180
- class << self
181
- def run domain_context, activity
182
- @stack = Mushin::Middleware::Builder.new do
183
- (#{@framework.capitalize}::DSL.find domain_context, activity).each do |middleware|
184
- p "#{@framework.capitalize} Logging: use " + middleware.name.to_s + " " + middleware.opts.to_s + " " + middleware.params.to_s
185
- use middleware.name, middleware.opts, middleware.params
186
- end
187
- end
188
- @setup_middlewares.each do |setup_middleware|
189
- @stack.insert_before 0, setup_middleware
190
- end
191
- @stack.call
192
- end
193
- end
194
- end
195
- class Env
196
- extend Mushin::Env
197
-
198
- class << self
199
- attr_accessor :id
200
-
201
- def get id
202
- #{@framework.capitalize}::Persistence::DS.load id.to_s + "#{@framework.downcase}"
203
- end
204
-
205
- def set id, &block
206
- @id = id.to_s + "#{@framework.downcase}"
207
- def on domain_context, &block
208
- @domain_context = domain_context
209
- @activities = []
210
- def activity statment
211
- @activities += [statment]
212
- end
213
- instance_eval(&block)
214
- end
215
- instance_eval(&block)
216
-
217
- Dir["./#{@framework.downcase}/*"].each {|file| load file }
218
-
219
- #{@framework.capitalize}::Engine.setup [Object.const_get('#{@framework.capitalize}::Persistence::DS')]
220
- @activities.each do |activity|
221
- #{@framework.capitalize}::Engine.run @domain_context, activity
222
- end
223
- return #{@framework.capitalize}::Persistence::DS.load @id
224
- end
225
- end
226
- end
227
- end
228
- eos
229
- df.close
230
-
231
- df = File.new("#{@framework.downcase}/#{@framework.downcase}.gemspec", "w")
232
- df.puts <<-eos
233
- # coding: utf-8
234
- lib = File.expand_path('../lib', __FILE__)
235
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
236
-
237
- Gem::Specification.new do |spec|
238
- spec.name = "#{@framework.downcase}"
239
- spec.version = "0.0.0.pre1"
240
- spec.authors = ["#{@author}"]
241
- spec.email = ["#{@email}"]
242
- spec.summary = "#{@summary}"
243
- spec.description = "#{@desc}"
244
- spec.homepage = "#{@website}"
245
- spec.license = "#{@license}"
246
-
247
- spec.files = Dir.glob("{lib}/**/*")
248
- spec.require_paths = ["lib"]
249
- end
250
- eos
251
- df.close
252
-
253
- # Framework Peristance Gem
254
- @ds = @framework.downcase + '-redis'
255
- if File.directory?("#{@ds.downcase}")
256
- FileUtils.remove_dir (Dir::pwd + "/#{@ds.downcase}")
257
- end
258
- Dir.mkdir(Dir::pwd + "/#{@ds.downcase}")
259
- Dir.mkdir(Dir::pwd + "/#{@ds.downcase}/lib")
260
- Dir.mkdir(Dir::pwd + "/#{@ds.downcase}/lib/#{@ds.downcase}")
261
- Dir.mkdir(Dir::pwd + "/#{@ds.downcase}/spec")
262
-
263
- df = File.new("#{@ds.downcase}/lib/#{@ds.downcase}.rb", "w")
264
- df.puts("require '#{@ds}/base'")
265
- df.close
266
-
267
- df = File.new("#{@ds.downcase}/lib/#{@ds.downcase}/base.rb", "w")
268
- df.puts <<-eos
269
- require "redis"
270
-
271
- module #{@framework.capitalize}
272
- module Persistence
273
- class DS
274
-
275
- #{@framework.capitalize}::Env.register do
276
- attr_accessor :id
277
- end
278
-
279
- @@redis = Redis.new
280
-
281
- def initialize app
282
- @app = app
283
- @id = #{@framework.capitalize}::Env.id
284
- end
285
-
286
- def call(env)
287
- p "#{@framework.capitalize}::Persistence::DS instance id = " + @id.to_s
288
- if exists? @id
289
- env[:#{@framework.downcase}] = DS.load @id
290
- p 'resotred' + env[:#{@framework.downcase}].to_s
291
- else
292
- p 'new obj from #{@framework.capitalize}::Env class'
293
- env[:#{@framework.downcase}] = #{@framework.capitalize}::Env.new
294
- env[:#{@framework.downcase}].id = @id
295
- p "env[:#{@framework.downcase}].id equals " + env[:#{@framework.downcase}].id.to_s
296
- end
297
- @app.call(env)
298
- DS.store env[:#{@framework.downcase}]
299
- p "stored " + env[:#{@framework.downcase}].to_s
300
- end
301
-
302
- def DS.store obj
303
- begin
304
- @#{@framework.downcase}_env = Marshal.dump obj
305
- @@redis.set(obj.id, @#{@framework.downcase}_env)
306
- ensure
307
- p "storing #{@framework} Env " + obj.to_s
308
- end
309
- end
310
- def DS.load id
311
- return Marshal.load (@@redis.get(id))
312
- end
313
-
314
- def exists? id
315
- if (@@redis.get id) && (Marshal.load @@redis.get id)
316
- p "#{@framework.capitalize}::Persistence::DS.exists? true"
317
- return true
318
- else
319
- p "#{@framework.capitalize}::Persistence::DS.exists? false"
320
- return false
321
- end
322
- end
323
- end
324
- end
325
- end
326
- eos
327
- df.close
328
-
329
- df = File.new("#{@ds.downcase}/#{@ds.downcase}.gemspec", "w")
330
- df.puts <<-eos
331
- # coding: utf-8
332
- lib = File.expand_path('../lib', __FILE__)
333
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
334
-
335
- Gem::Specification.new do |spec|
336
- spec.name = "#{@ds.downcase}"
337
- spec.version = "0.0.0.pre1"
338
- spec.authors = ["#{@author}"]
339
- spec.email = ["#{@email}"]
340
- spec.summary = "#{@ds_summary}"
341
- spec.description = "#{@ds_desc}"
342
- spec.homepage = "#{@ds_website}"
343
- spec.license = "#{@license}"
344
-
345
- spec.files = Dir.glob("{lib}/**/*")
346
- spec.require_paths = ["lib"]
347
- end
348
- eos
349
- df.close
350
-
351
- when "share"
352
- @gem = ARGV[0]
353
-
354
- Find.find(Dir.pwd) do |path|
355
- if (File.extname(path) == ".gemspec") && (File.basename(path).include? @gem.downcase)
356
- @path = path
357
- `gem build #{@path.downcase}`
358
- end
359
- if (File.extname(path) == ".gem") && (File.basename(path).include? @gem.downcase)
360
- @path = path
361
- `gem push #{@path.downcase}`
362
- end
363
- end
364
- when "clean"
365
- @gem = ARGV[0]
366
-
367
- Find.find(Dir.pwd) do |path|
368
- if (File.extname(path) == ".gem") && (File.basename(path).include? @gem.downcase)
369
- @path = path
370
- `rm #{@path.downcase}`
371
- end
372
- end
373
- else
374
- puts "You just making it up! try mushin --help"
375
- end