hiroshimarb 0.2.1 → 0.2.2

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.
@@ -4,6 +4,9 @@
4
4
 
5
5
  $ hiroshimarb event
6
6
 
7
+ 背景:
8
+ 前提 イベントの情報源は"features/resource/event.yaml"
9
+
7
10
  シナリオ: もっとも近いイベントについての表示
8
11
  もし "hiroshimarb event" を実行
9
12
  ならば 以下の内容を表示:
@@ -12,6 +15,7 @@
12
15
 
13
16
  http://hiroshimarb.github.com/blog/2012/11/16/hiroshimarb-26/
14
17
 
18
+
15
19
  """
16
20
  シナリオ: イベントについての表示
17
21
  もし "hiroshimarb event all" を実行
@@ -25,4 +29,5 @@
25
29
 
26
30
  http://hiroshimarb.github.com/blog/2012/11/16/hiroshimarb-26/
27
31
 
32
+
28
33
  """
@@ -0,0 +1,7 @@
1
+ ---
2
+ - date: '2012-12-01 14:00 - 18:00'
3
+ title: '広島Ruby勉強会 #026'
4
+ url: 'http://hiroshimarb.github.com/blog/2012/11/16/hiroshimarb-26/'
5
+ - date: '2012-11-03 14:00 - 18:00'
6
+ title: '広島Ruby勉強会 #025'
7
+ url: 'http://hiroshimarb.github.com/blog/2012/10/15/hiroshimarb-25/'
@@ -11,3 +11,7 @@ end
11
11
  ならば /^以下の内容を表示:$/ do |string|
12
12
  expect(all_stdout).to eq(string)
13
13
  end
14
+
15
+ 前提 /^イベントの情報源は"(.*?)"$/ do |filename|
16
+ ENV['resource'] = filename
17
+ end
data/hiroshimarb.gemspec CHANGED
@@ -5,7 +5,7 @@ require 'hiroshimarb/member'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
7
  gem.authors = Hiroshimarb::Member.all.map(&:name)
8
- gem.email = ["eiel.hal@gmail.com", "algebraicallyClosedField@gmail.com"]
8
+ gem.email = ["eiel.hal@gmail.com"]
9
9
  gem.description = %q{provide `hiroshimarb` command. hiroshimarb is Hiroshima.rb. Hiroshima.rb is local community of Ruby in Hiroshima/Japan}
10
10
  gem.summary = %q{provide `hiroshimarb` command. hiroshimarb is Hiroshima.rb}
11
11
  gem.homepage = "http://github.com/hiroshimarb/hiroshimarb-gem"
@@ -1,31 +1,39 @@
1
1
  # -*- coding: utf-8 -*-
2
+ require 'hiroshimarb/event'
3
+
2
4
  module Hiroshimarb::Commands
3
5
  class Event < Hiroshimarb::Command
6
+ WDAYS = %w{日 月 火 水 木 金 土}
7
+
4
8
  def call(*args)
5
9
  sub_command = args.first
6
10
  if sub_command == "all"
7
- puts all
11
+ ::Hiroshimarb::Event.all.each do |event|
12
+ puts event_format(event)
13
+ end
8
14
  else
9
- puts recent
15
+ puts event_format(::Hiroshimarb::Event.recent)
10
16
  end
11
17
  end
12
18
 
13
- def recent
19
+ def event_format(event)
14
20
  <<EOD
15
- 2012-12-01 () 14:00-18:00 広島Ruby勉強会 #026
21
+ #{time_format(event)} #{event.title}
22
+
23
+ #{event.url}
16
24
 
17
- http://hiroshimarb.github.com/blog/2012/11/16/hiroshimarb-26/
18
25
  EOD
19
26
  end
20
27
 
21
- def all
22
- rest = <<EOD
23
- 2012-11-03 (土) 14:00-18:00 広島Ruby勉強会 #025
24
-
25
- http://hiroshimarb.github.com/blog/2012/10/15/hiroshimarb-25/
26
-
27
- EOD
28
- rest + recent
28
+ def time_format(event)
29
+ start = event.start_datetime
30
+ ent = event.end_datetime
31
+ wday = WDAYS[start.wday]
32
+ date = start.strftime("%Y-%m-%d")
33
+ format = '%H:%M'
34
+ start_time = start.strftime(format)
35
+ end_time = ent.strftime(format)
36
+ "#{date} (#{wday}) #{start_time}-#{end_time}"
29
37
  end
30
38
  end
31
39
  end
@@ -0,0 +1,50 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'date'
3
+ require 'yaml'
4
+
5
+ module Hiroshimarb
6
+ # イベントを表現するクラス
7
+ class Event
8
+ attr_accessor :start_datetime, :end_datetime, :url, :title
9
+
10
+ class << self
11
+ def all
12
+ @events || load_yaml
13
+ end
14
+
15
+ def recent
16
+ all.last
17
+ end
18
+
19
+ def resource_file_path
20
+ root = File.join(File.dirname(__FILE__), "..", "..")
21
+ File.join(root, filename)
22
+ end
23
+
24
+ def filename
25
+ ENV["resource"] || File.join("resource", "event.yaml")
26
+ end
27
+
28
+ def load_yaml
29
+ resource_file = resource_file_path
30
+ events = YAML.parse_file(resource_file).to_ruby.map do |event_hash|
31
+ event = Event.new
32
+ event.title = event_hash["title"]
33
+ event.url = event_hash["url"]
34
+ event.date_parse event_hash["date"]
35
+ event
36
+ end
37
+ events.sort { |a,b| a.start_datetime <=> b.end_datetime }
38
+ end
39
+ end
40
+
41
+ # 2012-12-01 14:00 - 18:00 のような形式を処理する
42
+ def date_parse(datetime_str)
43
+ start_str, end_str = datetime_str.split(' - ')
44
+ date_str = start_str.split(' ')[0]
45
+ end_str = "#{date_str} #{end_str}"
46
+ self.start_datetime = DateTime.parse(start_str + " JST")
47
+ self.end_datetime = DateTime.parse(end_str + " JST")
48
+ end
49
+ end
50
+ end
@@ -1,3 +1,3 @@
1
1
  module Hiroshimarb
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -0,0 +1,10 @@
1
+ ---
2
+ - date: '2013-02-02 14:00 - 18:00'
3
+ title: '広島Ruby勉強会 #027'
4
+ url: 'http://hiroshimarb.github.com/blog/2013/01/18/hiroshimarb-27/'
5
+ - date: '2012-12-01 14:00 - 18:00'
6
+ title: '広島Ruby勉強会 #026'
7
+ url: 'http://hiroshimarb.github.com/blog/2012/11/16/hiroshimarb-26/'
8
+ - date: '2012-11-03 14:00 - 18:00'
9
+ title: '広島Ruby勉強会 #025'
10
+ url: 'http://hiroshimarb.github.com/blog/2012/10/15/hiroshimarb-25/'
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'hiroshimarb/event'
3
+
4
+ module Hiroshimarb
5
+ describe Event do
6
+ describe '.all' do
7
+ subject { Event.all }
8
+ it { should have(2).items }
9
+ end
10
+
11
+ describe '.recent' do
12
+ subject { Event.recent }
13
+ its(:title) { should eq('広島Ruby勉強会 #026') }
14
+ it '日付は2012年12月1日' do
15
+ date = subject.start_datetime
16
+ expect(date.strftime('%Y-%m-%d')).to eq('2012-12-01')
17
+ end
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiroshimarb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -24,7 +24,7 @@ authors:
24
24
  autorequire:
25
25
  bindir: bin
26
26
  cert_chain: []
27
- date: 2012-12-27 00:00:00.000000000 Z
27
+ date: 2013-01-21 00:00:00.000000000 Z
28
28
  dependencies:
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: launchy
@@ -78,7 +78,6 @@ description: provide `hiroshimarb` command. hiroshimarb is Hiroshima.rb. Hiroshi
78
78
  is local community of Ruby in Hiroshima/Japan
79
79
  email:
80
80
  - eiel.hal@gmail.com
81
- - algebraicallyClosedField@gmail.com
82
81
  executables:
83
82
  - hiroshimarb
84
83
  extensions: []
@@ -95,6 +94,7 @@ files:
95
94
  - features/convert.feature
96
95
  - features/event.feature
97
96
  - features/info.feature
97
+ - features/resource/event.yaml
98
98
  - features/step_definitions/default_steps.rb
99
99
  - features/support/env.rb
100
100
  - hiroshimarb.gemspec
@@ -109,12 +109,15 @@ files:
109
109
  - lib/hiroshimarb/commands/member.rb
110
110
  - lib/hiroshimarb/commands/open.rb
111
111
  - lib/hiroshimarb/dsl.rb
112
+ - lib/hiroshimarb/event.rb
112
113
  - lib/hiroshimarb/information.rb
113
114
  - lib/hiroshimarb/member.rb
114
115
  - lib/hiroshimarb/version.rb
116
+ - resource/event.yaml
115
117
  - resource/member.rb
116
118
  - spec/hiroshimarb/command_spec.rb
117
119
  - spec/hiroshimarb/dsl_spec.rb
120
+ - spec/hiroshimarb/event_spec.rb
118
121
  - spec/hiroshimarb/information_spec.rb
119
122
  - spec/hiroshimarb/member_spec.rb
120
123
  - spec/hiroshimarb_spec.rb
@@ -147,10 +150,12 @@ test_files:
147
150
  - features/convert.feature
148
151
  - features/event.feature
149
152
  - features/info.feature
153
+ - features/resource/event.yaml
150
154
  - features/step_definitions/default_steps.rb
151
155
  - features/support/env.rb
152
156
  - spec/hiroshimarb/command_spec.rb
153
157
  - spec/hiroshimarb/dsl_spec.rb
158
+ - spec/hiroshimarb/event_spec.rb
154
159
  - spec/hiroshimarb/information_spec.rb
155
160
  - spec/hiroshimarb/member_spec.rb
156
161
  - spec/hiroshimarb_spec.rb