narabi 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,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in narabi.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,5 @@
1
+ TODO
2
+ ====
3
+
4
+ - Support note
5
+ - Changing the order of instances
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,41 @@
1
+ # language: ja
2
+
3
+ フィーチャ: narabi の文字列を解析する
4
+ 開発者として、
5
+ シーケンス図をみるために、
6
+ 文字列からインスタンスとメッセージを取得したい。
7
+
8
+ シナリオアウトライン: 一行の解析に成功
9
+ 前提 一行の文字列<入力値>を入力する
10
+ もし 一行の文字列を解析する
11
+ ならば 送信元は<送信元>となること
12
+ かつ 受信先は<受信先>となること
13
+ かつ 電文は<電文>となること
14
+
15
+ 例:
16
+ | 入力値 | 送信元 | 受信先 | 電文 |
17
+ | "Foo->Bar: Some message" | "Foo" | "Bar" | " Some message" |
18
+ | "Bar-->Foo: Response" | "Bar" | "Foo" | " Response" |
19
+ | " A 1 -> B 1 : M1 " | " A 1 " | " B 1 " | " M1 " |
20
+ | "太郎->花子:" | "太郎" | "花子" | "" |
21
+
22
+ シナリオアウトライン: 呼び出しと応答
23
+ 前提 一行の文字列<入力値>を入力する
24
+ もし 一行の文字列を解析する
25
+ ならば 種類は<種類>となること
26
+
27
+ 例:
28
+ | 入力値 | 種類 |
29
+ | "Foo->Bar: Some message" | 呼び出し |
30
+ | "Bar-->Foo: Response" | 応答 |
31
+
32
+ シナリオアウトライン: 不正な行を解析
33
+ 前提 一行の文字列<入力値>を入力する
34
+ もし 一行の文字列を解析する
35
+ ならば シーケンスは不正
36
+
37
+ 例:
38
+ | 入力値 |
39
+ | "Foo->Bar" |
40
+ | "Foo-->Bar" |
41
+ | "" |
@@ -0,0 +1,38 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ CAPTURE_STRING = Transform /^.*?$/ do |str|
4
+ str
5
+ end
6
+
7
+ 前提 /^一行の文字列"(#{CAPTURE_STRING})"を入力する$/ do |input|
8
+ @input = input
9
+ end
10
+
11
+ もし /^一行の文字列を解析する$/ do
12
+ @output = Narabi.parse_line(@input)
13
+ end
14
+
15
+ ならば /^送信元は"(#{CAPTURE_STRING})"となること$/ do |expected_sender|
16
+ @output.sender.should == expected_sender
17
+ end
18
+
19
+ ならば /^受信先は"(#{CAPTURE_STRING})"となること$/ do |expected_receiver|
20
+ @output.receiver.should == expected_receiver
21
+ end
22
+
23
+ ならば /^電文は"(#{CAPTURE_STRING})"となること$/ do |expected_message|
24
+ @output.message.should == expected_message
25
+ end
26
+
27
+ ならば /^種類は呼び出しとなること$/ do
28
+ @output.is_normal == true
29
+ end
30
+
31
+ ならば /^種類は応答となること$/ do
32
+ @output.is_normal == false
33
+ end
34
+
35
+ ならば /^シーケンスは不正$/ do
36
+ @output.should == nil
37
+ end
38
+
@@ -0,0 +1,2 @@
1
+ #require File.join(File.dirname(__FILE__), '..', '..', 'lib', 'narabi')
2
+ require File.join(File.dirname(__FILE__), '..', '..', 'lib', 'narabi', 'parser')
data/lib/narabi.rb ADDED
@@ -0,0 +1,2 @@
1
+ #require "narabi/version"
2
+ #require "narabi/parser"
@@ -0,0 +1,22 @@
1
+ module Narabi
2
+ NORMAL_REGEXP = /^(.+)->(.+):(.*)/
3
+ RESPONSE_REGEXP = /^(.+)-->(.+):(.*)/
4
+
5
+ class Sequence
6
+ attr_reader :sender, :receiver, :message, :is_normal
7
+
8
+ def initialize(match, is_normal = true)
9
+ @sender, @receiver, @message = match.values_at(1..3)
10
+ @is_normal = is_normal
11
+ end
12
+ end
13
+
14
+ def self.parse_line(src)
15
+ if match = RESPONSE_REGEXP.match(src)
16
+ return Sequence.new(match, false)
17
+ end
18
+ if match = NORMAL_REGEXP.match(src)
19
+ return Sequence.new(match)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,3 @@
1
+ module Narabi
2
+ VERSION = "0.0.1"
3
+ end
data/narabi.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "narabi/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "narabi"
7
+ s.version = Narabi::VERSION
8
+ s.authors = ["Yasuhiro Usutani"]
9
+ s.email = ["y_usutani@me.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Sequence text parser}
12
+ s.description = %q{Sequence text parser}
13
+
14
+ s.rubyforge_project = "narabi"
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"
23
+ # s.add_runtime_dependency "rest-client"
24
+ s.add_development_dependency "cucumber"
25
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: narabi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Yasuhiro Usutani
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: cucumber
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Sequence text parser
47
+ email:
48
+ - y_usutani@me.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - README.md
56
+ - Rakefile
57
+ - features/parser.feature
58
+ - features/step_definitions/parser_steps.rb
59
+ - features/support/env.rb
60
+ - lib/narabi.rb
61
+ - lib/narabi/parser.rb
62
+ - lib/narabi/version.rb
63
+ - narabi.gemspec
64
+ homepage: ''
65
+ licenses: []
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project: narabi
84
+ rubygems_version: 1.8.24
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Sequence text parser
88
+ test_files:
89
+ - features/parser.feature
90
+ - features/step_definitions/parser_steps.rb
91
+ - features/support/env.rb