tagen 1.1.4 → 1.1.5

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 CHANGED
@@ -1,3 +1,3 @@
1
- *~
1
+ /*.gem
2
2
  /.yardoc
3
3
  /tags
data/Gemfile CHANGED
@@ -1,10 +1,11 @@
1
- source 'http://rubygems.org'
1
+ source "http://rubygems.org"
2
2
 
3
- gem 'activesupport', '~>3.1.0'
3
+ gem "activesupport", "~>3.1.0"
4
+ gem "i18n"
4
5
 
5
6
  group :development do
6
- gem 'rspec'
7
- gem 'watchr'
7
+ gem "rspec"
8
+ gem "watchr"
8
9
  end
9
10
 
10
11
  #gemspec
@@ -4,6 +4,7 @@ GEM
4
4
  activesupport (3.1.3)
5
5
  multi_json (~> 1.0)
6
6
  diff-lcs (1.1.3)
7
+ i18n (0.6.0)
7
8
  multi_json (1.0.3)
8
9
  rspec (2.7.0)
9
10
  rspec-core (~> 2.7.0)
@@ -20,5 +21,6 @@ PLATFORMS
20
21
 
21
22
  DEPENDENCIES
22
23
  activesupport (~> 3.1.0)
24
+ i18n
23
25
  rspec
24
26
  watchr
data/Rakefile CHANGED
@@ -1,32 +1,43 @@
1
+ sudo = Process.pid==0 ? "" : "sudo"
2
+
1
3
  desc "build a gem file"
2
4
  task :release do
3
- `rm *.gem &>/dev/null`
4
- sh "gem build tagen.gemspec"
5
- sh "gem push *.gem"
6
- sh "rm *.gem"
5
+ run "gem build tagen.gemspec"
6
+ run "gem push *.gem"
7
+ run "#{sudo} gem install *.gem"
8
+ run "rm *.gem"
7
9
  end
8
10
 
9
- desc "install a gem"
11
+ desc "install a gem file"
10
12
  task :install do
11
- `rm *.gem &>/dev/null`
12
- sh "gem build tagen.gemspec"
13
- sh "gem install *.gem"
14
- sh "rm *.gem"
13
+ run "gem build tagen.gemspec"
14
+ run "#{sudo} gem install *.gem"
15
+ run "rm *.gem"
15
16
  end
16
17
 
17
18
  desc "autotest with watchr"
18
19
  task :test do
19
- sh "watchr tagen.watchr"
20
+ run "watchr tagen.watchr"
20
21
  end
21
22
 
23
+ desc "testing the libraray"
22
24
  namespace :test do
23
- desc "testing the whole library"
24
25
  task :all do
25
- sh "rspec --color spec"
26
+ run "rspec spec"
26
27
  end
27
28
  end
28
29
 
29
- def sh cmd
30
+ desc "run yard server --reload"
31
+ task :doc do
32
+ run "yard server --reload"
33
+ end
34
+
35
+ desc "clean up"
36
+ task :clean do
37
+ run "rm *.gem"
38
+ end
39
+
40
+ def run cmd
30
41
  puts cmd
31
42
  system cmd
32
43
  end
@@ -8,7 +8,6 @@
8
8
  core/enumerator
9
9
  core/numeric
10
10
  core/string
11
- core/symbol
12
11
  core/array
13
12
  core/hash
14
13
  core/extend_hash
@@ -20,3 +19,6 @@
20
19
 
21
20
  core/open_option
22
21
  ).each {|n| require_relative n }
22
+
23
+ # from active_support
24
+ require "active_support/core_ext"
@@ -50,7 +50,7 @@ private
50
50
  # RUBY_PLATFORM is "i686-linux" "i386-migw32"
51
51
  #
52
52
  # @return [Boolean]
53
- def linux?()
53
+ def linux?
54
54
  RUBY_PLATFORM =~ /linux/
55
55
  end
56
56
 
@@ -58,7 +58,7 @@ private
58
58
  #
59
59
  # @return [Boolean]
60
60
  # @see {#linux?}
61
- def win32?()
61
+ def win32?
62
62
  RUBY_PLATFORM =~ /mingw32|mswin/
63
63
  end
64
64
  end # module Kernel
@@ -1,9 +1,8 @@
1
1
  class Symbol
2
-
2
+ # confict with active_support/core
3
3
  # goes to String, return Symbol
4
- def method_missing name, *args
5
- ret = to_s.send name, *args
6
- String===ret ? ret.to_sym : ret
7
- end
8
-
4
+ #def method_missing name, *args
5
+ #ret = to_s.send name, *args
6
+ #String===ret ? ret.to_sym : ret
7
+ #end
9
8
  end
@@ -1,8 +1,50 @@
1
1
  class Time
2
- # return a float of current time
2
+ # return a float of time since linux epoch
3
3
  #
4
4
  # #=> 1295953427.0005338
5
5
  #
6
6
  # @return [Float]
7
- def self.time; now.to_f end
8
- end # class Time
7
+ def self.time
8
+ now.to_f
9
+ end
10
+
11
+ class Deta
12
+ class <<self
13
+ # @param [Time] from
14
+ # @param [Time] to
15
+ # @return [Time::Deta] deta
16
+ def deta(from, to)
17
+ seconds = (from-to).to_i
18
+ self.new(seconds)
19
+ end
20
+ end
21
+
22
+ attr_reader :years, :months, :days, :hours, :minutes, :seconds
23
+
24
+ def initialize(seconds)
25
+ deta = seconds
26
+ deta, @seconds = deta.divmod(60)
27
+ deta, @minutes = deta.divmod(60)
28
+ deta, @hours = deta.divmod(24)
29
+ deta, @days = deta.divmod(30)
30
+ @years, @months = deta.divmod(12)
31
+ end
32
+
33
+ def display(include_seconds=true)
34
+ ret = ""
35
+ ret << "#{years} years " unless years == 0
36
+ ret << "#{months} months " unless months == 0
37
+ ret << "#{days} days " unless days==0
38
+ ret << "#{hours} hours " unless hours == 0
39
+ ret << "#{minutes} minutes " unless minutes == 0
40
+ ret << "#{seconds} seconds" if include_seconds
41
+
42
+ ret
43
+ end
44
+
45
+ # to [years, months, days, hours minutes seconds]
46
+ def to_a
47
+ [ years, months, days, hours, minutes, seconds ]
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,80 @@
1
+ require "date"
2
+
3
+ class Date # ::Deta
4
+ class Deta
5
+ class <<self
6
+ # @param [Date] from
7
+ # @param [Date] to
8
+ # @return [Date::Deta] deta
9
+ def deta(from, to)
10
+ days = (from-to).to_i
11
+ self.new(days)
12
+ end
13
+ end
14
+
15
+ attr_reader :years, :months, :days
16
+
17
+ def initialize(days)
18
+ deta = days
19
+ deta, @days = deta.divmod(30)
20
+ @years, @months = deta.divmod(12)
21
+ end
22
+
23
+ def display(include_days=true)
24
+ ret = ""
25
+ ret << "#{years} years " unless years == 0
26
+ ret << "#{months} months " unless months == 0
27
+ ret << "#{days} days" unless (!include_days && days==0)
28
+
29
+ ret
30
+ end
31
+
32
+ # to [years months days]
33
+ def to_a
34
+ [ years, months, days ]
35
+ end
36
+ end
37
+ end
38
+
39
+
40
+ class DateTime # ::Deta
41
+ class Deta
42
+ class <<self
43
+ # @param [DateTime] from
44
+ # @param [DateTime] to
45
+ # @return [DateTime::Deta] deta
46
+ def deta(from, to)
47
+ seconds = (from-to)*24*3600.to_i
48
+ self.new(seconds)
49
+ end
50
+ end
51
+
52
+ attr_reader :years, :months, :days, :hours, :minutes, :seconds
53
+
54
+ def initialize(seconds)
55
+ deta = seconds
56
+ deta, @seconds = deta.divmod(60)
57
+ deta, @minutes = deta.divmod(60)
58
+ deta, @hours = deta.divmod(24)
59
+ deta, @days = deta.divmod(30)
60
+ @years, @months = deta.divmod(12)
61
+ end
62
+
63
+ def display(include_seconds=true)
64
+ ret = ""
65
+ ret << "#{years} years " unless years == 0
66
+ ret << "#{months} months " unless months == 0
67
+ ret << "#{days} days " unless days==0
68
+ ret << "#{hours} hours " unless hours == 0
69
+ ret << "#{minutes} minutes " unless minutes == 0
70
+ ret << "#{seconds} seconds" if include_seconds
71
+
72
+ ret
73
+ end
74
+
75
+ # to [years, months, days, hours, minutes, seconds]
76
+ def to_a
77
+ [ years, months, days, hours, minutes, seconds ]
78
+ end
79
+ end
80
+ end
@@ -1,22 +1,80 @@
1
1
  require "socket"
2
2
 
3
- class Socket
4
- class <<self
5
- # pack human-readable address to Socket address
6
- #
7
- # @example
8
- # addr("192.168.1.1") #=> "\xC0\xA8\x01\x01"
9
- #
10
- # @return [String] address used by Socket
11
- # @see unaddr
12
- def addr(str) str.split(".").map{|v|v.to_i}.pack("CCCC") end
13
-
14
- # unpack to humna-readable address from Socket address
15
- #
16
- # @example
17
- # unaddr("\xC0\xA8\x01\x01") #=> "192.168.1.1"
18
- #
19
- # @return [String] human readable address
20
- def unaddr(str) str.unpack("CCCC").join(".") end
3
+ class BasicSocket
4
+ MessageLengthError = Class.new(StandardError)
5
+ MessageUnderflow = Class.new(StandardError)
6
+
7
+ MAXLEN = 65535
8
+ LEN_LEN = [0].pack("N").size
9
+
10
+ # Send a message over the socket. The message is like a datagram rather
11
+ # than a stream of data.
12
+ def send2(message)
13
+ len = message.length
14
+ if len > MAXLEN
15
+ raise MessageLengthError, "MAXLEN exceeded: #{len} > #{MAXLEN}"
16
+ end
17
+ send([len].pack("N"), 0)
18
+ send(message, 0)
19
+ end
20
+
21
+ # Receive a message from the socket. Returns +""+ when there are no
22
+ # more messages (the writer has closed its end of the socket).
23
+ # Yields each time more data is received, even if partial. This can
24
+ # be used for a progress indicator.
25
+ def recv2
26
+ if (data = recv(LEN_LEN))
27
+ if data.empty?
28
+ ""
29
+ else
30
+ len = data.unpack("N")[0]
31
+ if len > MAXLEN
32
+ raise MessageLengthError, "MAXLEN exceeded: #{len} > #{MAXLEN}"
33
+ end
34
+
35
+ msg = ""
36
+ part = nil
37
+ while (delta = len - msg.length) > 0 and (part = recv(delta))
38
+ if part.length == 0
39
+ raise MessageUnderflow,
40
+ "Peer closed socket before finishing message --" +
41
+ " received #{msg.length} of #{len} bytes:\n" +
42
+ msg[0..99].unpack("H*")[0] + "..."
43
+ end
44
+ yield part if block_given?
45
+ msg << part
46
+ end
47
+ msg.empty? ? nil : msg
48
+ end
49
+ end
50
+ end
51
+
52
+ def send_obj(obj)
53
+ send2 Marshal.dump(obj)
54
+ end
55
+
56
+ def recv_obj
57
+ Marshal.load recv2
58
+ end
21
59
  end
60
+
61
+ class Socket
62
+ class <<self
63
+ # pack human-readable address to Socket address
64
+ #
65
+ # @example
66
+ # addr("192.168.1.1") #=> "\xC0\xA8\x01\x01"
67
+ #
68
+ # @return [String] address used by Socket
69
+ # @see unaddr
70
+ def addr(str) str.split(".").map{|v|v.to_i}.pack("CCCC") end
71
+
72
+ # unpack to humna-readable address from Socket address
73
+ #
74
+ # @example
75
+ # unaddr("\xC0\xA8\x01\x01") #=> "192.168.1.1"
76
+ #
77
+ # @return [String] human readable address
78
+ def unaddr(str) str.unpack("CCCC").join(".") end
79
+ end
22
80
  end
@@ -1,3 +1,3 @@
1
1
  module Tagen
2
- VERSION="1.1.4"
2
+ VERSION = "1.1.5"
3
3
  end
@@ -1,6 +1,5 @@
1
1
  require "tagen/core"
2
2
 
3
-
4
3
  class Dir
5
4
  class << self
6
5
  def empty? path
@@ -8,3 +7,42 @@ class Dir
8
7
  end
9
8
  end
10
9
  end
10
+
11
+ RSpec.configure do |config|
12
+ def capture(stream)
13
+ begin
14
+ stream = stream.to_s
15
+ eval "$#{stream} = StringIO.new"
16
+ yield
17
+ result = eval("$#{stream}").string
18
+ ensure
19
+ eval("$#{stream} = #{stream.upcase}")
20
+ end
21
+
22
+ result
23
+ end
24
+
25
+ alias :silence :capture
26
+ end
27
+
28
+ module Kernel
29
+ private
30
+
31
+ def xdescribe(*args, &blk)
32
+ describe *args do
33
+ pending "xxxxxxxxx"
34
+ end
35
+ end
36
+
37
+ def xcontext(*args, &blk)
38
+ context *args do
39
+ pending "xxxxxxxxx"
40
+ end
41
+ end
42
+
43
+ def xit(*args, &blk)
44
+ it *args do
45
+ pending "xxxxxxxx"
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
+ =begin
3
4
  describe Symbol do
4
5
  describe "#method_missing" do
5
6
  it "#sub. returns a symbol" do
@@ -9,6 +10,6 @@ describe Symbol do
9
10
  it "#chars. return a enumerator" do
10
11
  :_foo.chars.should be_an_instance_of Enumerator
11
12
  end
12
-
13
13
  end
14
14
  end
15
+ =end
@@ -0,0 +1,64 @@
1
+ require "spec_helper"
2
+
3
+ describe Time do
4
+ describe ".time" do
5
+ it "works" do
6
+ Time.stub_chain("now.to_f") { 1 }
7
+ Time.time.should == 1
8
+ end
9
+ end
10
+ end
11
+
12
+ Deta = Time::Deta
13
+ describe Deta do
14
+ describe "#initialize" do
15
+ it "works for 36561906 seconds" do
16
+ d = Deta.new(36561906)
17
+
18
+ d.years.should == 1
19
+ d.months.should == 2
20
+ d.days.should == 3
21
+ d.hours.should == 4
22
+ d.minutes.should == 5
23
+ d.seconds.should == 6
24
+ end
25
+ end
26
+
27
+ describe "#display" do
28
+ it "works for 1 years 2 months 3 days 4 hours 5 minutes 6 seconds" do
29
+ d = Deta.new(36561906)
30
+
31
+ d.display.should == "1 years 2 months 3 days 4 hours 5 minutes 6 seconds"
32
+ end
33
+
34
+ it "works for 0 second" do
35
+ d = Deta.new(0)
36
+
37
+ d.display.should == "0 seconds"
38
+ end
39
+ end
40
+
41
+ describe "#to_a" do
42
+ it "works" do
43
+ d = Deta.new(1)
44
+ d.stub(:years) { 1 }
45
+ d.stub(:months) { 2 }
46
+ d.stub(:days) { 3 }
47
+ d.stub(:hours) { 4 }
48
+ d.stub(:minutes) { 5 }
49
+ d.stub(:seconds) { 6 }
50
+
51
+
52
+ d.to_a.should == [ 1, 2, 3, 4, 5, 6 ]
53
+ end
54
+ end
55
+
56
+ describe ".deta" do
57
+ it "works" do
58
+ a = Deta.deta(Time.new(2011, 1, 1, 1, 1, 2), Time.new(2011, 1, 1, 1, 1, 1)).to_a
59
+ b = [ 0, 0, 0, 0, 0, 1 ]
60
+
61
+ a.should == b
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,6 @@
1
+ require "spec_helper"
2
+
3
+ describe "core" do
4
+
5
+ end
6
+
@@ -0,0 +1,146 @@
1
+ require "spec_helper"
2
+ require "tagen/date"
3
+
4
+ describe Date::Deta do
5
+ before :all do
6
+ Deta = Date::Deta
7
+ end
8
+
9
+ describe "#initialize" do
10
+ it "works for 423 days" do
11
+ d = Deta.new(423)
12
+ d.years.should == 1
13
+ d.months.should == 2
14
+ d.days.should == 3
15
+ end
16
+
17
+ it "works for 32 days" do
18
+ d = Deta.new(32)
19
+ d.years.should == 0
20
+ d.months.should == 1
21
+ d.days.should == 2
22
+ end
23
+
24
+ it "works for 1 day" do
25
+ d = Deta.new(1)
26
+ d.years.should == 0
27
+ d.months.should == 0
28
+ d.days.should == 1
29
+ end
30
+ end
31
+
32
+ describe "#display" do
33
+ it "works for 1 years 2 months 3 days" do
34
+ d = Deta.new(1)
35
+ d.stub(:years) { 1 }
36
+ d.stub(:months) { 2 }
37
+ d.stub(:days) { 3 }
38
+
39
+ d.display.should == "1 years 2 months 3 days"
40
+ end
41
+
42
+ it "works for 2 months 3 days" do
43
+ d = Deta.new(1)
44
+ d.stub(:years) { 0 }
45
+ d.stub(:months) { 2 }
46
+ d.stub(:days) { 3 }
47
+
48
+ d.display.should == "2 months 3 days"
49
+ end
50
+
51
+ it "works for 0 days" do
52
+ d = Deta.new(1)
53
+ d.stub(:years) { 0 }
54
+ d.stub(:months) { 0 }
55
+ d.stub(:days) { 0 }
56
+
57
+ d.display.should == "0 days"
58
+ end
59
+
60
+ it "works for 0 days with :include_days => false" do
61
+ d = Deta.new(1)
62
+ d.stub(:years) { 0 }
63
+ d.stub(:months) { 0 }
64
+ d.stub(:days) { 0 }
65
+
66
+ d.display(false).should == ""
67
+ end
68
+ end
69
+
70
+ describe "#to_a" do
71
+ it "works" do
72
+ d = Deta.new(1)
73
+ d.stub(:years) { 1 }
74
+ d.stub(:months) { 2 }
75
+ d.stub(:days) { 3 }
76
+
77
+ d.to_a.should == [ 1, 2, 3 ]
78
+ end
79
+ end
80
+
81
+ describe ".deta" do
82
+ it "works" do
83
+ a = Deta.deta(Date.new(2011, 1, 2), Date.new(2011, 1, 1)).to_a
84
+ b = [ 0, 0, 1 ]
85
+
86
+ a.should == b
87
+ end
88
+ end
89
+ end
90
+
91
+ describe DateTime::Deta do
92
+ before :all do
93
+ Deta = DateTime::Deta
94
+ end
95
+
96
+ describe "#initialize" do
97
+ it "works for 36561906 seconds" do
98
+ d = Deta.new(36561906)
99
+
100
+ d.years.should == 1
101
+ d.months.should == 2
102
+ d.days.should == 3
103
+ d.hours.should == 4
104
+ d.minutes.should == 5
105
+ d.seconds.should == 6
106
+ end
107
+ end
108
+
109
+ describe "#display" do
110
+ it "works for 1 years 2 months 3 days 4 hours 5 minutes 6 seconds" do
111
+ d = Deta.new(36561906)
112
+
113
+ d.display.should == "1 years 2 months 3 days 4 hours 5 minutes 6 seconds"
114
+ end
115
+
116
+ it "works for 0 second" do
117
+ d = Deta.new(0)
118
+
119
+ d.display.should == "0 seconds"
120
+ end
121
+ end
122
+
123
+ describe "#to_a" do
124
+ it "works" do
125
+ d = Deta.new(1)
126
+ d.stub(:years) { 1 }
127
+ d.stub(:months) { 2 }
128
+ d.stub(:days) { 3 }
129
+ d.stub(:hours) { 4 }
130
+ d.stub(:minutes) { 5 }
131
+ d.stub(:seconds) { 6 }
132
+
133
+
134
+ d.to_a.should == [ 1, 2, 3, 4, 5, 6 ]
135
+ end
136
+ end
137
+
138
+ describe ".deta" do
139
+ it "works" do
140
+ a = Deta.deta(DateTime.new(2011, 1, 1, 1, 1, 2), DateTime.new(2011, 1, 1, 1, 1, 1)).to_a
141
+ b = [ 0, 0, 0, 0, 0, 1 ]
142
+
143
+ a.should == b
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,28 @@
1
+ require "spec_helper"
2
+ require "tagen/socket"
3
+
4
+ describe BasicSocket do
5
+ describe "#send2 and #recv2" do
6
+ it "works" do
7
+ s = TCPServer.open("127.0.0.1", 0)
8
+ af, port, host, addr = s.addr
9
+ c = TCPSocket.open(host, port)
10
+ s = s.accept
11
+ c.send2("guten")
12
+ c.send2("tag")
13
+ s.recv2.should == "guten"
14
+ s.recv2.should == "tag"
15
+ end
16
+ end
17
+
18
+ describe "#send_obj and #recv_obj" do
19
+ it "works" do
20
+ s = TCPServer.open("127.0.0.1", 0)
21
+ af, port, host, addr = s.addr
22
+ c = TCPSocket.open(host, port)
23
+ s = s.accept
24
+ c.send_obj([1,2])
25
+ s.recv_obj.should == [1,2]
26
+ end
27
+ end
28
+ end
@@ -1,20 +1,21 @@
1
- $: << File.expand_path('../lib', __FILE__)
2
- require 'tagen/version'
1
+ $: << File.expand_path("../lib", __FILE__)
2
+ require "tagen/version"
3
3
 
4
4
  Gem::Specification.new do |s|
5
- s.name = 'tagen'
5
+ s.name = "tagen"
6
6
  s.version = Tagen::VERSION
7
- s.summary = 'a core and extra extension to ruby library'
7
+ s.summary = "a core and extra extension to ruby library"
8
8
  s.description = <<-EOF
9
9
  a core and extra extension to ruby library.
10
10
  EOF
11
11
 
12
- s.author = 'Guten'
13
- s.email = 'ywzhaifei@gmail.com'
14
- s.homepage = 'http://github.com/GutenYe/tagen'
15
- s.rubyforge_project = 'xx'
12
+ s.author = "Guten"
13
+ s.email = "ywzhaifei@gmail.com"
14
+ s.homepage = "http://github.com/GutenYe/tagen"
15
+ s.rubyforge_project = "xx"
16
16
 
17
17
  s.files = `git ls-files`.split("\n")
18
18
 
19
- s.add_dependency 'activesupport', '~>3.1.0'
19
+ s.add_dependency "activesupport", "~>3.1.0"
20
+ s.add_dependency "i18n"
20
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tagen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-02 00:00:00.000000000 Z
12
+ date: 2012-02-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &17287020 !ruby/object:Gem::Requirement
16
+ requirement: &19935160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,7 +21,18 @@ dependencies:
21
21
  version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *17287020
24
+ version_requirements: *19935160
25
+ - !ruby/object:Gem::Dependency
26
+ name: i18n
27
+ requirement: &19934120 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *19934120
25
36
  description: ! "a core and extra extension to ruby library. \n"
26
37
  email: ywzhaifei@gmail.com
27
38
  executables: []
@@ -62,6 +73,7 @@ files:
62
73
  - lib/tagen/core/string/pyformat.rb
63
74
  - lib/tagen/core/symbol.rb
64
75
  - lib/tagen/core/time.rb
76
+ - lib/tagen/date.rb
65
77
  - lib/tagen/erb.rb
66
78
  - lib/tagen/gdk_pixbuf2.rb
67
79
  - lib/tagen/gtk2.rb
@@ -88,7 +100,11 @@ files:
88
100
  - spec/tagen/core/open_option_spec.rb
89
101
  - spec/tagen/core/string/pyformat_spec.rb
90
102
  - spec/tagen/core/symbol_spec.rb
103
+ - spec/tagen/core/time_spec.rb
104
+ - spec/tagen/core_spec.rb
105
+ - spec/tagen/date_spec.rb
91
106
  - spec/tagen/erb_spec.rb
107
+ - spec/tagen/socket_spec.rb
92
108
  - tagen.gemspec
93
109
  - tagen.watchr
94
110
  homepage: http://github.com/GutenYe/tagen