versionomy 0.1.0 → 0.1.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/History.rdoc CHANGED
@@ -1,3 +1,10 @@
1
+ === 0.1.1 / 2009-10-19
2
+
3
+ * Formats can now be specified by name in the convenience interface.
4
+ * FormatRedefinedError no longer subclasses FormatCreationError.
5
+ * Some documentation updates.
6
+ * Rakefile updates for publishing to rubyforge and gemcutter.
7
+
1
8
  === 0.1.0 / 2009-10-14
2
9
 
3
10
  * Alpha release, opened for public feedback
data/README.rdoc CHANGED
@@ -86,7 +86,7 @@ semantics for comparing, parsing, and modifying version numbers.
86
86
 
87
87
  === Requirements
88
88
 
89
- * Ruby 1.8.6 or later, Ruby 1.9.1 or later, or JRuby 1.4 or later.
89
+ * Ruby 1.8.6 or later (1.8.7 recommended), Ruby 1.9.1 or later, or JRuby 1.4 or later.
90
90
  * blockenspiel gem.
91
91
 
92
92
  === Installation
@@ -101,11 +101,11 @@ semantics for comparing, parsing, and modifying version numbers.
101
101
 
102
102
  === Development and support
103
103
 
104
- Documentation is available at http://virtuoso.rubyforge.org/versionomy
104
+ Documentation is available at http://virtuoso.rubyforge.org/versionomy/README_rdoc.html
105
105
 
106
- Source code is hosted by Github at http://github.com/dazuma/versionomy
106
+ Source code is hosted on Github at http://github.com/dazuma/versionomy
107
107
 
108
- Report bugs on RubyForge at http://rubyforge.org/projects/virtuoso
108
+ Report bugs on Github issues at http://github.org/dazuma/versionomy/issues
109
109
 
110
110
  Contact the author at dazuma at gmail dot com.
111
111
 
data/Rakefile CHANGED
@@ -48,7 +48,7 @@ extra_rdoc_files_ = ['README.rdoc', 'History.rdoc']
48
48
 
49
49
 
50
50
  # Default task
51
- task :default => [:clean, :rdoc, :test]
51
+ task :default => [:clean, :rdoc, :package, :test]
52
52
 
53
53
 
54
54
  # Clean task
@@ -98,7 +98,7 @@ end
98
98
 
99
99
  # Publish RDocs
100
100
  desc 'Publishes RDocs to RubyForge'
101
- task :publish_rdoc => [:rerdoc] do
101
+ task :publish_rdoc_to_rubyforge => [:rerdoc] do
102
102
  config_ = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
103
103
  username_ = config_['username']
104
104
  sh "rsync -av --delete doc/ #{username_}@rubyforge.org:/var/www/gforge-projects/virtuoso/versionomy"
@@ -106,7 +106,7 @@ end
106
106
 
107
107
 
108
108
  # Publish gem
109
- task :publish_gem => [:package] do |t_|
109
+ task :publish_gem_to_rubyforge => [:package] do |t_|
110
110
  v_ = ENV["VERSION"]
111
111
  abort "Must supply VERSION=x.y.z" unless v_
112
112
  if v_ != Versionomy::VERSION_STRING
@@ -125,6 +125,22 @@ task :publish_gem => [:package] do |t_|
125
125
  config_["release_notes"] = release_notes_
126
126
  config_["release_changes"] = release_changes_
127
127
  config_["preformatted"] = true
128
- puts "Releasing versionomy #{v_}"
128
+ puts "Releasing versionomy #{v_} to RubyForge"
129
129
  rf_.add_release('virtuoso', 'versionomy', v_, gem_pkg_, tgz_pkg_)
130
130
  end
131
+
132
+
133
+ # Publish gem
134
+ task :publish_gem_to_gemcutter => [:package] do |t_|
135
+ v_ = ENV["VERSION"]
136
+ abort "Must supply VERSION=x.y.z" unless v_
137
+ if v_ != Versionomy::VERSION_STRING
138
+ abort "Versions don't match: #{v_} vs #{Versionomy::VERSION_STRING}"
139
+ end
140
+ puts "Releasing versionomy #{v_} to GemCutter"
141
+ `cd pkg && gem push versionomy-#{v_}.gem`
142
+ end
143
+
144
+
145
+ # Publish everything
146
+ task :publish => [:publish_gem_to_gemcutter, :publish_gem_to_rubyforge, :publish_rdoc_to_rubyforge]
@@ -115,7 +115,7 @@ module Versionomy
115
115
  end
116
116
 
117
117
 
118
- # Base class for all Versionomy format creation exceptions
118
+ # Base class for all Versionomy format creation exceptions.
119
119
 
120
120
  class FormatCreationError < VersionomyError
121
121
  end
@@ -124,7 +124,14 @@ module Versionomy
124
124
  # This exception is raised if you try to register a format
125
125
  # with a name that has already been used.
126
126
 
127
- class FormatRedefinedError < FormatCreationError
127
+ class FormatRedefinedError < VersionomyError
128
+ end
129
+
130
+
131
+ # Raised by the Formats registry if you try to retrieve a format with
132
+ # an unrecognized name in strict mode.
133
+
134
+ class UnknownFormatError < VersionomyError
128
135
  end
129
136
 
130
137
 
@@ -69,6 +69,7 @@ module Versionomy
69
69
 
70
70
 
71
71
  # Parse the given string and return a value.
72
+ #
72
73
  # The optional parameter hash can be used to pass parameters to the
73
74
  # parser to affect its behavior. The exact parameters supported are
74
75
  # defined by the format.
@@ -79,6 +80,7 @@ module Versionomy
79
80
 
80
81
 
81
82
  # Unparse the given value and return a string.
83
+ #
82
84
  # The optional parameter hash can be used to pass parameters to the
83
85
  # unparser to affect its behavior. The exact parameters supported
84
86
  # are defined by the format.
@@ -53,9 +53,17 @@ module Versionomy
53
53
 
54
54
 
55
55
  # Get the format with the given name.
56
+ #
57
+ # If the given name has not been defined, and strict is set to true,
58
+ # raises Versionomy::Errors::UnknownFormatError. If strict is set to
59
+ # false, returns nil if the given name has not been defined.
56
60
 
57
- def self.get(name_)
58
- @names[name_.to_s]
61
+ def self.get(name_, strict_=false)
62
+ format_ = @names[name_.to_s]
63
+ if format_.nil? && strict_
64
+ raise Errors::UnknownFormatError, name_
65
+ end
66
+ format_
59
67
  end
60
68
 
61
69
 
@@ -55,11 +55,21 @@ module Versionomy
55
55
  end
56
56
 
57
57
 
58
- # Sets the default format.
59
- # Usually this should be left as the "standard" format returned by
60
- # Versionomy::Formats.standard. To reset to that value, pass nil.
58
+ # Sets the default format used by other methods of this convenience
59
+ # interface. Usually, this is set to the "standard" format returned by
60
+ # Versionomy::Formats.standard and should not be changed.
61
+ #
62
+ # The format can be specified as a format object or the name of a format
63
+ # registered with Versionomy::Formats. If the format is set to nil, the
64
+ # default_format will be reset to the "standard" format.
65
+ #
66
+ # Raises Versionomy::Errors::UnknownFormatError if a name is given that
67
+ # is not registered.
61
68
 
62
69
  def default_format=(format_)
70
+ if format_.kind_of?(String) || format_.kind_of?(Symbol)
71
+ format_ = Formats.get(format_, true)
72
+ end
63
73
  @default_format = format_
64
74
  end
65
75
 
@@ -67,26 +77,49 @@ module Versionomy
67
77
  # Create a new version number given a hash or array of values, and an
68
78
  # optional format.
69
79
  #
70
- # The values should either be a hash of field names and values, or an array
71
- # of values that will be interpreted in field order.
80
+ # The values should either be a hash of field names and values, or an
81
+ # array of values that will be interpreted in field order.
82
+ #
83
+ # The format can be specified as a format object or the name of a format
84
+ # registered with Versionomy::Formats. If the format is omitted or set
85
+ # to nil, the default_format will be used.
72
86
  #
73
- # If the format is omitted or set to nil, the default_format will be used.
87
+ # You can also optionally provide default parameters to be used when
88
+ # unparsing this value or any derived from it.
74
89
  #
75
- # You can also optionally provide default unparsing parameters for the value.
90
+ # Raises Versionomy::Errors::UnknownFormatError if a name is given that
91
+ # is not registered.
76
92
 
77
93
  def create(values_=[], format_=nil, unparse_params_=nil)
78
- Value.new(values_, format_ || default_format, unparse_params_)
94
+ if format_.kind_of?(String) || format_.kind_of?(Symbol)
95
+ format_ = Formats.get(format_, true)
96
+ end
97
+ format_ ||= default_format
98
+ Value.new(values_, format_, unparse_params_)
79
99
  end
80
100
 
81
101
 
82
- # Create a new version number given a string to parse, and an optional format.
102
+ # Create a new version number given a string to parse, and an optional
103
+ # format.
104
+ #
105
+ # The format can be specified as a format object or the name of a format
106
+ # registered with Versionomy::Formats. If the format is omitted or set
107
+ # to nil, the default_format will be used.
108
+ #
109
+ # The parameter hash, if present, will be passed as parsing parameters
110
+ # to the format.
83
111
  #
84
- # If the format is omitted or set to nil, the default_format will be used.
112
+ # Raises Versionomy::Errors::UnknownFormatError if a name is given that
113
+ # is not registered.
85
114
  #
86
- # The params, if present, will be passed as parsing parameters to the format.
115
+ # May raise Versionomy::Errors::ParseError if parsing failed.
87
116
 
88
117
  def parse(str_, format_=nil, parse_params_=nil)
89
- (format_ || default_format).parse(str_, parse_params_)
118
+ if format_.kind_of?(String) || format_.kind_of?(Symbol)
119
+ format_ = Formats.get(format_, true)
120
+ end
121
+ format_ ||= default_format
122
+ format_.parse(str_, parse_params_)
90
123
  end
91
124
 
92
125
  end
@@ -37,13 +37,13 @@
37
37
  module Versionomy
38
38
 
39
39
  # Current gem version, as a frozen string.
40
- VERSION_STRING = '0.1.0'.freeze
40
+ VERSION_STRING = '0.1.1'.freeze
41
41
 
42
42
  # Current gem version, as a Versionomy::Value.
43
- VERSION = ::Versionomy.parse(VERSION_STRING, ::Versionomy::Formats.standard)
43
+ VERSION = ::Versionomy.parse(VERSION_STRING, :standard)
44
44
 
45
45
  end
46
46
 
47
47
 
48
48
  ::Blockenspiel.const_set(:VERSION,
49
- ::Versionomy.parse(::Blockenspiel::VERSION_STRING, ::Versionomy::Formats.standard))
49
+ ::Versionomy.parse(::Blockenspiel::VERSION_STRING, :standard))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: versionomy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Azuma
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-14 00:00:00 -07:00
12
+ date: 2009-10-19 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency