NextNumber 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in NextNumber.gemspec
4
+ gemspec
@@ -0,0 +1,27 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ begin
5
+ require 'rake/rdoctask'
6
+ rescue
7
+ require 'rdoc/task'
8
+ end
9
+ desc 'Default: run unit tests.'
10
+ desc 'Run: rake test'
11
+ task :default => :test
12
+
13
+ desc 'Test the framework plugin.'
14
+ Rake::TestTask.new(:test) do |t|
15
+ t.libs << 'lib'
16
+ t.pattern = 'test/**/*_test.rb'
17
+ t.verbose = true
18
+ end
19
+
20
+ desc 'Generate documentation for the framework plugin.'
21
+ Rake::RDocTask.new(:rdoc) do |rdoc|
22
+ rdoc.rdoc_dir = 'rdoc'
23
+ rdoc.title = 'Framework'
24
+ rdoc.options << '--line-numbers' << '--inline-source'
25
+ rdoc.rdoc_files.include('README')
26
+ rdoc.rdoc_files.include('lib/**/*.rb')
27
+ end
@@ -0,0 +1,2 @@
1
+ require "NextNumber/version"
2
+ require "#{File.dirname __FILE__}/NextNumber/standard_types.rb"
@@ -0,0 +1,59 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class NilClass
3
+ def next_number(qty=1)
4
+ end
5
+
6
+ def -(number)
7
+ end
8
+
9
+ def region_to(qty=1)
10
+ end
11
+
12
+ def region_sizeof(number)
13
+ end
14
+ end
15
+
16
+ class String
17
+ #得到字符串的下一个编号,是对字符串中数值区域的值的增加,
18
+ #如果该字符串没有数值区域,那么返回原字符串
19
+ #例如
20
+ # 'abc'.next_number -> abc
21
+ # 'abc100'.next_number ->abc101
22
+ # '100'.next_number ->101
23
+ # '100abc'.next_number ->101abc
24
+ # '0100abc'.next_number ->0101abc
25
+ # '0099abc'.next_number ->0100abc
26
+ # "abc100".next_number(10) ->"abc110"
27
+ # "100abc".next_number(10) ->"110abc"
28
+ # "100abc100".next_number(10) ->"100abc110"
29
+ def next_number(qty=1)
30
+ self.reverse.sub(/(0*)\d+/) { |match| (match.reverse.to_i+qty.to_i).to_s.rjust(match.length,"0").reverse }.reverse
31
+ end
32
+
33
+ #两个字符串相减,得到两个字符串之间相减的数量
34
+ #例如:
35
+ # "abc"-"abc" ->0
36
+ # "abc110"-"abc100" ->10
37
+ # "110abc"-"100abc" ->10
38
+ def -(number)
39
+ match1 = /\d+/.match(self)
40
+ match2 = /\d+/.match(number)
41
+ (match1 && match2) ? match1[0].to_i - match2[0].to_i : 0
42
+ end
43
+
44
+ #从当前区段得到下一区段,区段的间隔由qty指定,区段包括首尾部分
45
+ #例如:
46
+ # "a100".region_to(1) ->"a100"
47
+ # "a100".region_to(2) ->"a101"
48
+ def region_to(qty=1)
49
+ raise "参数不允许为0" if qty==0
50
+ next_number(qty<0? qty+1: qty-1)
51
+ end
52
+ #计算两个区段之间的大小,区段是包含首尾部分
53
+ #例如:
54
+ # "a100".region_sizeof("a100") ->1
55
+ # "a100".region_sizeof("a101") ->2
56
+ def region_sizeof(number)
57
+ (self-number).abs+1
58
+ end
59
+ end
@@ -0,0 +1,3 @@
1
+ module NextNumber
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: NextNumber
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - 尜芈爨
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
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: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
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: next number
47
+ email: 1244002@qq.com
48
+ executables: []
49
+ extensions: []
50
+ extra_rdoc_files: []
51
+ files:
52
+ - Gemfile
53
+ - Rakefile
54
+ - lib/NextNumber.rb
55
+ - lib/NextNumber/version.rb
56
+ - lib/NextNumber/standard_types.rb
57
+ homepage: http://www.huolg.com
58
+ licenses:
59
+ - MIT
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 1.8.25
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: order number
82
+ test_files: []