Sha256: 62c5cdbb3312c9e8c6a1e3eaf965f0922e1f7592a370d926ca5846fff34134d9
Contents?: true
Size: 1.63 KB
Versions: 1
Compression:
Stored size: 1.63 KB
Contents
class SiteHub class CandidateRoutes module FromJson extend CollectionMethods def self.extended clazz clazz.class_eval do include InstanceMethods end end # TODO: support nested routes, i.e. support rule name being passed in def from_hash(hash, sitehub_cookie_name, sitehub_cookie_path) cookie_path = hash[:sitehub_cookie_path] || sitehub_cookie_path cookie_name = hash[:sitehub_cookie_name] || sitehub_cookie_name new(sitehub_cookie_name: cookie_name, sitehub_cookie_path: cookie_path, mapped_path: hash[:path]) do handle_routes(hash, self) default url: hash[:default] if hash[:default] end end module InstanceMethods private def handle_routes(hash, routes) extract_splits(hash, routes) extract_routes(hash, routes) end def extract_routes(hash, routes) collection(hash, :routes).each do |route| routes.route(url: route[:url], label: route[:label]) end end def extract_splits(hash, routes) collection(hash, :splits).each do |split| label = split[:label] percentage = split[:percentage] cookie_name = split[:sitehub_cookie_name] || sitehub_cookie_name if split[:splits] || split[:routes] routes.split(percentage: percentage, label: label) { handle_routes(split, self) } else routes.split(percentage: percentage, label: label, url: split[:url]) end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sitehub-0.5.0.alpha11 | lib/sitehub/candidate_routes/from_json.rb |