Class: GB2260::Division

Inherits:
Object
  • Object
show all
Defined in:
lib/GB2260/division.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code, name, revision = nil) ⇒ Division

Returns a new instance of Division.



17
18
19
20
21
# File 'lib/GB2260/division.rb', line 17

def initialize(code, name, revision=nil)
  @code = code.to_s
  @name = name.to_s
  @revision = (revision || DEFAULT_REVISION).to_s
end

Instance Attribute Details

#code ⇒ Object (readonly)

Returns the value of attribute code.



5
6
7
# File 'lib/GB2260/division.rb', line 5

def code
  @code
end

#name ⇒ Object (readonly)

Returns the value of attribute name.



5
6
7
# File 'lib/GB2260/division.rb', line 5

def name
  @name
end

#revision ⇒ Object (readonly)

Returns the value of attribute revision.



5
6
7
# File 'lib/GB2260/division.rb', line 5

def revision
  @revision
end

Class Method Details

.batch(codes, revision = nil) ⇒ Object



13
14
15
# File 'lib/GB2260/division.rb', line 13

def self.batch(codes, revision=nil)
  codes.map { |code| get(code, revision) }.compact
end

.get(code, revision = nil) ⇒ Object



8
9
10
11
# File 'lib/GB2260/division.rb', line 8

def self.get(code, revision=nil)
  name = Data.search(code, revision)
  name && new(code, name, revision)
end

Instance Method Details

#==(other) ⇒ Object



23
24
25
# File 'lib/GB2260/division.rb', line 23

def ==(other)
  eql? other
end

#county ⇒ Object



59
60
61
# File 'lib/GB2260/division.rb', line 59

def county
  self unless is_province? or is_prefecture?
end

#description(separator = '/') ⇒ Object



31
32
33
# File 'lib/GB2260/division.rb', line 31

def description(separator = '/')
  [province, prefecture, county].compact.map(&:name).join(separator)
end

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/GB2260/division.rb', line 27

def eql?(other)
  code == other.code && revision == other.revision
end

#hash ⇒ Object



39
40
41
# File 'lib/GB2260/division.rb', line 39

def hash
  [@code, @revision].hash
end

#is_county? ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/GB2260/division.rb', line 63

def is_county?
  !is_province? and !is_prefecture?
end

#is_prefecture? ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/GB2260/division.rb', line 55

def is_prefecture?
  prefecture == self
end

#is_province? ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/GB2260/division.rb', line 47

def is_province?
  province == self
end

#prefecture ⇒ Object



51
52
53
# File 'lib/GB2260/division.rb', line 51

def prefecture
  Division.get(@code[0,4] + PREFECTURE_SUFFIX, @revision) unless is_province?
end

#province ⇒ Object



43
44
45
# File 'lib/GB2260/division.rb', line 43

def province
  Division.get(@code[0,2] + PROVINCE_SUFFIX, @revision)
end

#to_s ⇒ Object



35
36
37
# File 'lib/GB2260/division.rb', line 35

def to_s
  "<GB2260-#{revision.split(NAMESPACE_SEPARATOR)[-1]} #{code} #{description}>"
end