raudi 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ Gemfile.lock
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm 1.9.3@raudi --create
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in raudi.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,11 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :version => 2, :cli=>"--colour --format=Fuubar", :all_after_pass => false do
5
+
6
+ watch(%r{^spec/.+_spec\.rb$})
7
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
8
+ watch('spec/spec_helper.rb') { "spec" }
9
+
10
+ end
11
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1 @@
1
+ //
@@ -0,0 +1,3 @@
1
+ AvrController.define :atmega328 do |controller|
2
+ controller.add_lib 'util/delay'
3
+ end
data/examples/result.c ADDED
@@ -0,0 +1,10 @@
1
+ #include <avr/io.h>
2
+ #include <util/delay.h>
3
+
4
+ void main()
5
+ {
6
+ while(1)
7
+ {
8
+
9
+ }
10
+ }
@@ -0,0 +1,33 @@
1
+ module ActionProcessor
2
+
3
+ class << self
4
+
5
+ def generate_source(actions_file)
6
+ raise %q{Controller isn't specified in config.rb file} unless Raudi.controller
7
+ define_actions(actions_file)
8
+ output = ''
9
+ output << append_libs(Raudi.controller.libs)
10
+ output << block_delimiter
11
+ output << main_block
12
+ end
13
+
14
+ def append_libs(libs)
15
+ libs.map do |lib_name|
16
+ lib_name = lib_name.to_s
17
+ lib_name << '.h' unless lib_name =~ /\.h$/
18
+ "#include <#{lib_name}>"
19
+ end.join("\n")
20
+ end
21
+
22
+ def block_delimiter
23
+ "\n"
24
+ end
25
+
26
+ def define_actions(actions_file)
27
+ File.open(actions_file) do |file|
28
+ end
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,23 @@
1
+ class AvrController
2
+
3
+ class << self
4
+
5
+ def define(model_name)
6
+ Raudi.controller = new(model_name)
7
+ yield(Raudi.controller) if block_given?
8
+ end
9
+
10
+ end
11
+
12
+ attr_accessor :libs
13
+
14
+ def initialize(model_name)
15
+ @model_name = model_name
16
+ @libs = ['avr/io']
17
+ end
18
+
19
+ def add_lib(lib_name)
20
+ @libs << lib_name
21
+ end
22
+
23
+ end
data/lib/raudi.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'raudi/action_processor'
2
+ require 'raudi/avr_controller'
3
+
4
+ module Raudi
5
+
6
+ class << self
7
+
8
+ attr_accessor :controller
9
+
10
+ def version
11
+ "0.0.1"
12
+ end
13
+
14
+ def generate(config_file, actions_file)
15
+ absolute_config_path = File.expand_path(config_file)
16
+ absolute_actions_path = File.expand_path(actions_file)
17
+ raise 'Create configuration file config.rb before' unless File.exists?(absolute_config_path)
18
+ raise 'Create actions file actions.raudi before' unless File.exists?(absolute_actions_path)
19
+ load(absolute_config_path)
20
+ ActionProcessor.generate_source(absolute_config_path)
21
+ end
22
+
23
+ end
24
+
25
+ end
data/raudi.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "raudi"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "raudi"
7
+ s.version = Raudi.version
8
+ s.authors = ["Sergey Pchelincev"]
9
+ s.email = ["jalkoby91@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Raudi is adapter for programming avr controller without pain}
12
+ s.description = %q{Raudi is adapter for programming avr controller without pain}
13
+
14
+ s.rubyforge_project = "raudi"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "rspec", '>= 2.5'
23
+ s.add_development_dependency 'guard-rspec'
24
+ s.add_development_dependency 'fuubar'
25
+ s.add_development_dependency 'ruby_gntp'
26
+
27
+ end
@@ -0,0 +1,9 @@
1
+ describe Raudi do
2
+
3
+ it 'should generate source code' do
4
+ output = Raudi.generate('examples/config.rb', 'examples/actions.raudi')
5
+ expected_ouput = File.open('examples/result.c')
6
+ output.should == expected_ouput.read
7
+ end
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: raudi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sergey Pchelincev
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &70350185137180 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '2.5'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70350185137180
25
+ - !ruby/object:Gem::Dependency
26
+ name: guard-rspec
27
+ requirement: &70350185136760 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70350185136760
36
+ - !ruby/object:Gem::Dependency
37
+ name: fuubar
38
+ requirement: &70350185136300 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70350185136300
47
+ - !ruby/object:Gem::Dependency
48
+ name: ruby_gntp
49
+ requirement: &70350185135880 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70350185135880
58
+ description: Raudi is adapter for programming avr controller without pain
59
+ email:
60
+ - jalkoby91@gmail.com
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - .gitignore
66
+ - .rvmrc
67
+ - Gemfile
68
+ - Guardfile
69
+ - Rakefile
70
+ - examples/actions.raudi
71
+ - examples/config.rb
72
+ - examples/result.c
73
+ - lib/raudi.rb
74
+ - lib/raudi/action_processor.rb
75
+ - lib/raudi/avr_controller.rb
76
+ - raudi.gemspec
77
+ - spec/raudi_spec.rb
78
+ homepage: ''
79
+ licenses: []
80
+ post_install_message:
81
+ rdoc_options: []
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubyforge_project: raudi
98
+ rubygems_version: 1.8.10
99
+ signing_key:
100
+ specification_version: 3
101
+ summary: Raudi is adapter for programming avr controller without pain
102
+ test_files:
103
+ - spec/raudi_spec.rb