class OnsOpenApi::Context

Public Class Methods

all() click to toggle source
# File lib/ons_openapi/context.rb, line 6
def all
  @contexts ||= OnsOpenApi::get('contexts').context_list.statistical_contexts.map {|x| new x}
end
new(x) click to toggle source
# File lib/ons_openapi/context.rb, line 11
def initialize x
  self.id = x.context_id
  self.name = x.context_name
end

Public Instance Methods

classification_names() click to toggle source
# File lib/ons_openapi/context.rb, line 56
def classification_names
  names_for classifications
end
classifications() click to toggle source
# File lib/ons_openapi/context.rb, line 28
def classifications
  @classifications ||= OnsOpenApi::get('classifications', context: @name).classification_list.classifications
end
collection(id_or_name) click to toggle source
# File lib/ons_openapi/context.rb, line 32
def collection id_or_name
  collection = collections.detect{|c| (c.id == id_or_name || c.title == id_or_name) }

  unless collection
    list = collections.select{|c| c.name == id_or_name}
    if list.size > 1
      cmds = list.map{|c| [c.id,c.title]}.flatten.map{|n| "collection('#{n}')"}
      raise "more than one match, try one of:\n\n  #{cmds.join("  \n\n  ") }\n\n"
    else
      collection = list.first
    end
  end

  collection
end
collection_names() click to toggle source
# File lib/ons_openapi/context.rb, line 52
def collection_names
  names_for collections
end
collections() click to toggle source
# File lib/ons_openapi/context.rb, line 20
def collections
  @collections ||= OnsOpenApi::get('collections', context: @name).collection_list.collections
  unless @collections.first.respond_to?(:context_name) && @collections.first.context_name
    @collections.each {|c| c.context_name = @name}
  end
  @collections
end
concept_names() click to toggle source
# File lib/ons_openapi/context.rb, line 48
def concept_names
  names_for concepts
end
concepts() click to toggle source
# File lib/ons_openapi/context.rb, line 16
def concepts
  @concepts ||= OnsOpenApi::get('concepts', context: @name).concept_list.concepts
end
electoral_divisions(code='2014WARDH') click to toggle source

Returns geography objects from the given Administrative Hierarchy with area type ‘Electoral Division’.

Parameter code defaults to +‘2014WARDH’+ for the 2014 Administrative Hierarchy, if no code supplied.

# File lib/ons_openapi/context.rb, line 101
def electoral_divisions code='2014WARDH'
  geographies(code).select {|z| z.area_type.codename['Electoral Division']}
end
electoral_wards(code='2014WARDH') click to toggle source

Returns geography objects from the given Administrative Hierarchy with area type ‘Electoral Ward/Division’

Parameter code defaults to +‘2014WARDH’+ for the 2014 Administrative Hierarchy, if no code supplied.

# File lib/ons_openapi/context.rb, line 110
def electoral_wards code='2014WARDH'
  geographies(code).select {|z| z.area_type.codename['Electoral Ward/Division']}
end
geographies(code='2011WARDH', option={ levels: '0,1,2,3,4,5,6,7' }) click to toggle source

Returns geography objects for given geography code.

Parameter code defaults to +‘2014WARDH’+ for the 2014 Administrative Hierarchy, if no code supplied.

Option levels defaults to +‘0,1,2,3,4,5,6,7’+. You can specify levels, e.g. geographies(‘2011WARDH’, levels: ‘0,1,2,3,4,5’)

Codes include: 2011WARDH - 2011 Administrative Hierarchy 2012WARDH - 2012 Administrative Hierarchy 2013WARDH - 2013 Administrative Hierarchy 2014WARDH - 2014 Administrative Hierarchy 2011STATH - 2011 Statistical Geography Hierarchy 2011PCONH - 2011 Westminster Parliamentary Constituency Hierarchy 2011HTWARDH - 2011 Census Merged Ward Hierarchy 2011CMLADH - 2011 Census merged local authority district hierarchy 2011PARISH - 2011 Parish Hierarchy

# File lib/ons_openapi/context.rb, line 78
def geographies code='2011WARDH', option={ levels: '0,1,2,3,4,5,6,7' }
  @geographies ||= {}
  levels = if code == '2011STATH' && option[:levels][/6|7|8|9/] # restrict levels to reduce delay
             '0,1,2,3,4,5'
           else # hierarchies require levels param be set
             option[:levels]
           end

  key = [code, levels].join('-')
  unless @geographies[key]
    params = { context: @name, levels: levels }
    result = OnsOpenApi::get "hierarchies/hierarchy/#{code}", params
    @geographies[key] = result.geography_list.items.items
  end
  @geographies[key].each {|g| g.geography_code = code }
  @geographies[key]
end

Private Instance Methods

names_for(list) click to toggle source
# File lib/ons_openapi/context.rb, line 116
def names_for list
  list.map(&:title)
end