NextNumber 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/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: []