atlasq 0.3.0 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5c97590b1917e246a952dc34825aeb6b881c3d0903019662a50db84d44d1829
4
- data.tar.gz: bc4cfafe83e9578005e678e75f20815cb1e25d7861995b36733acc0cb5305660
3
+ metadata.gz: b6650dab0b4ef8c8f817c79eaeb02203d321ca79ccee4ee410e455cfdffe5c90
4
+ data.tar.gz: 6209c9628bae2509bf1f155b6cf4a4b4b27fd04dfd6c715b7fbdb5e6f677e529
5
5
  SHA512:
6
- metadata.gz: ac6e49c9dfe4505ce8f5a46fba1634e3a8bf78a3632557aed579026b8b4cfc496b979e538da89b7273b8abaf54a63874afca13c01856dca02a72c02fcde6965c
7
- data.tar.gz: d2a42ff688ff63879c1ada6fed26e8a7a8619499f95d6f10dc0c5385ad0f669acab32e1dc4577457d578cd6aeda3cc0de12c71e6daf16ce77a5ce73050f2d449
6
+ metadata.gz: 16d0a6b8321a21a6bf790fd056ea0135a751cd0cea96c0417a6e52679e65a28a9c6ac70fbc07b2e4ec2fd425953f813e4a3bf7754bcf60b87d3fb1de88e66c1b
7
+ data.tar.gz: 3f14ee8d172d031ef478f9dd7398d8df789216c32d4c0308ca03e5944ada1b4c3e5d699d1b70d581eb8d219383fd6c4948994559bcb2ab7780c5760529d8b5f8
@@ -0,0 +1 @@
1
+ {"ca":"(ca/cat) Catalan; Valencian","ar":"(ar/ara) Arabic","ps":"(ps/pus) Pushto; Pashto","uz":"(uz/uzb) Uzbek","tk":"(tk/tuk) Turkmen","en":"(en/eng) English","sq":"(sq/alb) Albanian","hy":"(hy/arm) Armenian","ru":"(ru/rus) Russian","pt":"(pt/por) Portuguese","es":"(es/spa) Spanish; Castilian","gn":"(gn/grn) Guarani","sm":"(sm/smo) Samoan","de":"(de/ger) German","nl":"(nl/dut) Dutch; Flemish","sv":"(sv/swe) Swedish","az":"(az/aze) Azerbaijani","bs":"(bs/bos) Bosnian","hr":"(hr/hrv) Croatian","sr":"(sr/srp) Serbian","bn":"(bn/ben) Bengali","fr":"(fr/fre) French","ff":"(ff/ful) Fulah","bg":"(bg/bul) Bulgarian","rn":"(rn/run) Rundi","ms":"(ms/may) Malay","ay":"(ay/aym) Aymara","qu":"(qu/que) Quechua","dz":"(dz/dzo) Dzongkha","tn":"(tn/tsn) Tswana","be":"(be/bel) Belarusian","ln":"(ln/lin) Lingala","kg":"(kg/kon) Kongo","sw":"(sw/swa) Swahili","lu":"(lu/lub) Luba-Katanga","sg":"(sg/sag) Sango","it":"(it/ita) Italian","zh":"(zh/chi) Chinese","el":"(el/gre) Greek, Modern (1453-)","tr":"(tr/tur) Turkish","cs":"(cs/cze) Czech","sk":"(sk/slo) Slovak","da":"(da/dan) Danish","et":"(et/est) Estonian","ti":"(ti/tir) Tigrinya","am":"(am/amh) Amharic","fi":"(fi/fin) Finnish","fj":"(fj/fij) Fijian","hi":"(hi/hin) Hindi","ur":"(ur/urd) Urdu","fo":"(fo/fao) Faroese","ka":"(ka/geo) Georgian","kl":"(kl/kal) Kalaallisut; Greenlandic","ch":"(ch/cha) Chamorro","ht":"(ht/hat) Haitian; Haitian Creole","hu":"(hu/hun) Hungarian","id":"(id/ind) Indonesian","ga":"(ga/gle) Irish","he":"(he/heb) Hebrew","gv":"(gv/glv) Manx","fa":"(fa/per) Persian","is":"(is/ice) Icelandic","ja":"(ja/jpn) Japanese","ky":"(ky/kir) Kirghiz; Kyrgyz","km":"(km/khm) Central Khmer","ko":"(ko/kor) Korean","kk":"(kk/kaz) Kazakh","lo":"(lo/lao) Lao","si":"(si/sin) Sinhala; Sinhalese","ta":"(ta/tam) Tamil","st":"(st/sot) Sotho, Southern","lt":"(lt/lit) Lithuanian","lb":"(lb/ltz) Luxembourgish; Letzeburgesch","lv":"(lv/lav) Latvian","ro":"(ro/rum) Romanian; Moldavian; Moldovan","mg":"(mg/mlg) Malagasy","mh":"(mh/mah) Marshallese","mk":"(mk/mac) Macedonian","my":"(my/bur) Burmese","mn":"(mn/mon) Mongolian","mt":"(mt/mlt) Maltese","dv":"(dv/div) Divehi; Dhivehi; Maldivian","ny":"(ny/nya) Chichewa; Chewa; Nyanja","af":"(af/afr) Afrikaans","nb":"(nb/nob) Bokmål, Norwegian; Norwegian Bokmål","nn":"(nn/nno) Norwegian Nynorsk; Nynorsk, Norwegian","ne":"(ne/nep) Nepali","na":"(na/nau) Nauru","tl":"(tl/tgl) Tagalog","pl":"(pl/pol) Polish","rw":"(rw/kin) Kinyarwanda","sl":"(sl/slv) Slovenian","no":"(no/nor) Norwegian","so":"(so/som) Somali","ss":"(ss/ssw) Swati","th":"(th/tha) Thai","tg":"(tg/tgk) Tajik","to":"(to/ton) Tonga (Tonga Islands)","uk":"(uk/ukr) Ukrainian","la":"(la/lat) Latin","vi":"(vi/vie) Vietnamese","bi":"(bi/bis) Bislama","nr":"(nr/nbl) Ndebele, South; South Ndebele","ts":"(ts/tso) Tsonga","ve":"(ve/ven) Venda","xh":"(xh/xho) Xhosa","zu":"(zu/zul) Zulu","sn":"(sn/sna) Shona","nd":"(nd/nde) Ndebele, North; North Ndebele"}
@@ -0,0 +1 @@
1
+ {"ca":["ad"],"ar":["ae","bh","dj","dz","eg","er","il","iq","jo","km","kw","lb","ly","ma","mr","om","ps","qa","sa","sd","so","ss","sy","td","tn","ye"],"ps":["af"],"uz":["af","uz"],"tk":["af","tm"],"en":["ag","ai","as","au","bb","bm","bq","bs","bw","bz","ca","cc","ck","cm","cx","dm","er","fj","fk","fm","gb","gd","gg","gh","gi","gm","gs","gu","gy","hk","hm","ie","im","in","io","je","jm","ke","ki","kn","ky","lc","lr","ls","mf","mh","mp","ms","mt","mu","mw","my","na","nf","ng","nr","nu","nz","pg","ph","pk","pn","pr","ps","pw","rw","sb","sc","sd","sg","sh","sl","ss","sx","sz","tc","tk","to","tt","tv","tz","ug","um","us","vc","vg","vi","vu","ws","za","zm","zw"],"sq":["al","me"],"hy":["am","az","cy"],"ru":["am","by","kg","kz","ru","tj","uz"],"pt":["ao","br","cv","gw","mo","mz","pt","st","tl"],"es":["ar","bo","bz","cl","co","cr","cu","do","ec","eh","es","gq","gt","gu","hn","mx","ni","pa","pe","pr","py","sv","uy","ve"],"gn":["ar","py"],"sm":["as","ws"],"de":["at","be","ch","de","li","lu"],"nl":["aw","be","bq","cw","mf","nl","sr","sx"],"sv":["ax","fi","se"],"az":["az"],"bs":["ba","me"],"hr":["ba","hr","me"],"sr":["ba","me","rs"],"bn":["bd"],"fr":["be","bf","bi","bj","bl","ca","cd","cf","cg","ch","ci","cm","dj","eh","fr","ga","gf","gg","gn","gp","gq","ht","je","km","lb","lu","mc","mf","mg","ml","mq","mr","nc","ne","pf","pm","re","rw","sc","sn","td","tf","tg","tn","vu","wf","yt"],"ff":["bf","gn"],"bg":["bg"],"rn":["bi"],"ms":["bn","cx","my","sg"],"ay":["bo"],"qu":["bo"],"dz":["bt"],"tn":["bw","za"],"be":["by"],"ln":["cd","cg"],"kg":["cd"],"sw":["cd","ke","tz","ug"],"lu":["cd"],"sg":["cf"],"it":["ch","it","sm","va"],"zh":["cn","cx","hk","mo","tw"],"el":["cy","gr"],"tr":["cy","tr"],"cs":["cz"],"sk":["cz","sk"],"da":["dk"],"et":["ee"],"ti":["er"],"am":["et"],"fi":["fi"],"fj":["fj"],"hi":["fj","in"],"ur":["fj","pk"],"fo":["fo"],"ka":["ge"],"kl":["gl"],"ch":["gu","mp"],"ht":["ht"],"hu":["hu"],"id":["id"],"ga":["ie"],"he":["il","ps"],"gv":["im"],"fa":["ir"],"is":["is"],"ja":["jp"],"ky":["kg"],"km":["kh"],"ko":["kp","kr"],"kk":["kz"],"lo":["la"],"si":["lk"],"ta":["lk","sg"],"st":["ls","za"],"lt":["lt"],"lb":["lu"],"lv":["lv"],"ro":["md","ro"],"mg":["mg"],"mh":["mh"],"mk":["mk"],"my":["mm"],"mn":["mn"],"mt":["mt"],"dv":["mv"],"ny":["mw"],"af":["na","za"],"nb":["no"],"nn":["no"],"ne":["np"],"na":["nr"],"tl":["ph"],"pl":["pl"],"rw":["rw"],"sl":["si"],"no":["sj"],"so":["so"],"ss":["sz","za"],"th":["th"],"tg":["tj"],"to":["to"],"uk":["ua"],"la":["va"],"vi":["vn"],"bi":["vu"],"nr":["za"],"ts":["za"],"ve":["za"],"xh":["za"],"zu":["za"],"sn":["zw"],"nd":["zw"]}
@@ -0,0 +1 @@
1
+ {"ca":"ca","cat":"ca","ar":"ar","ara":"ar","ps":"ps","pus":"ps","uz":"uz","uzb":"uz","tk":"tk","tuk":"tk","en":"en","eng":"en","sq":"sq","alb":"sq","hy":"hy","arm":"hy","ru":"ru","rus":"ru","pt":"pt","por":"pt","es":"es","spa":"es","gn":"gn","grn":"gn","sm":"sm","smo":"sm","de":"de","ger":"de","nl":"nl","dut":"nl","sv":"sv","swe":"sv","az":"az","aze":"az","bs":"bs","bos":"bs","hr":"hr","hrv":"hr","sr":"sr","srp":"sr","bn":"bn","ben":"bn","fr":"fr","fre":"fr","ff":"ff","ful":"ff","bg":"bg","bul":"bg","rn":"rn","run":"rn","ms":"ms","may":"ms","ay":"ay","aym":"ay","qu":"qu","que":"qu","dz":"dz","dzo":"dz","tn":"tn","tsn":"tn","be":"be","bel":"be","ln":"ln","lin":"ln","kg":"kg","kon":"kg","sw":"sw","swa":"sw","lu":"lu","lub":"lu","sg":"sg","sag":"sg","it":"it","ita":"it","zh":"zh","chi":"zh","el":"el","gre":"el","tr":"tr","tur":"tr","cs":"cs","cze":"cs","sk":"sk","slo":"sk","da":"da","dan":"da","et":"et","est":"et","ti":"ti","tir":"ti","am":"am","amh":"am","fi":"fi","fin":"fi","fj":"fj","fij":"fj","hi":"hi","hin":"hi","ur":"ur","urd":"ur","fo":"fo","fao":"fo","ka":"ka","geo":"ka","kl":"kl","kal":"kl","ch":"ch","cha":"ch","ht":"ht","hat":"ht","hu":"hu","hun":"hu","id":"id","ind":"id","ga":"ga","gle":"ga","he":"he","heb":"he","gv":"gv","glv":"gv","fa":"fa","per":"fa","is":"is","ice":"is","ja":"ja","jpn":"ja","ky":"ky","kir":"ky","km":"km","khm":"km","ko":"ko","kor":"ko","kk":"kk","kaz":"kk","lo":"lo","lao":"lo","si":"si","sin":"si","ta":"ta","tam":"ta","st":"st","sot":"st","lt":"lt","lit":"lt","lb":"lb","ltz":"lb","lv":"lv","lav":"lv","ro":"ro","rum":"ro","mg":"mg","mlg":"mg","mh":"mh","mah":"mh","mk":"mk","mac":"mk","my":"my","bur":"my","mn":"mn","mon":"mn","mt":"mt","mlt":"mt","dv":"dv","div":"dv","ny":"ny","nya":"ny","af":"af","afr":"af","nb":"nb","nob":"nb","nn":"nn","nno":"nn","ne":"ne","nep":"ne","na":"na","nau":"na","tl":"tl","tgl":"tl","pl":"pl","pol":"pl","rw":"rw","kin":"rw","sl":"sl","slv":"sl","no":"no","nor":"no","so":"so","som":"so","ss":"ss","ssw":"ss","th":"th","tha":"th","tg":"tg","tgk":"tg","to":"to","ton":"to","uk":"uk","ukr":"uk","la":"la","lat":"la","vi":"vi","vie":"vi","bi":"bi","bis":"bi","nr":"nr","nbl":"nr","ts":"ts","tso":"ts","ve":"ve","ven":"ve","xh":"xh","xho":"xh","zu":"zu","zul":"zu","sn":"sn","sna":"sn","nd":"nd","nde":"nd"}
@@ -0,0 +1 @@
1
+ {"catalan":["ca"],"valencian":["ca"],"valencien":["ca"],"arabic":["ar"],"arabe":["ar"],"pushto":["ps"],"pashto":["ps"],"pachto":["ps"],"uzbek":["uz"],"ouszbek":["uz"],"turkmen":["tk"],"turkmene":["tk"],"english":["en"],"anglais":["en"],"albanian":["sq"],"albanais":["sq"],"armenian":["hy"],"armenien":["hy"],"russian":["ru"],"russe":["ru"],"portuguese":["pt"],"portugais":["pt"],"spanish":["es"],"castilian":["es"],"espagnol":["es"],"castillan":["es"],"guarani":["gn"],"samoan":["sm"],"german":["de"],"allemand":["de"],"dutch":["nl"],"flemish":["nl"],"neerlandais":["nl"],"flamand":["nl"],"swedish":["sv"],"suedois":["sv"],"azerbaijani":["az"],"azeri":["az"],"bosnian":["bs"],"bosniaque":["bs"],"croatian":["hr"],"croate":["hr"],"serbian":["sr"],"serbe":["sr"],"bengali":["bn"],"french":["fr"],"francais":["fr"],"fulah":["ff"],"peul":["ff"],"bulgarian":["bg"],"bulgare":["bg"],"rundi":["rn"],"malay":["ms"],"malais":["ms"],"aymara":["ay"],"quechua":["qu"],"dzongkha":["dz"],"tswana":["tn"],"belarusian":["be"],"bielorusse":["be"],"lingala":["ln"],"kongo":["kg"],"swahili":["sw"],"luba-katanga":["lu"],"sango":["sg"],"italian":["it"],"italien":["it"],"chinese":["zh"],"chinois":["zh"],"greek":["el"],"modern":["el"],"1453-":["el"],"grec":["el"],"moderne":["el"],"apres":["el"],"1453":["el"],"turkish":["tr"],"turc":["tr"],"czech":["cs"],"tcheque":["cs"],"slovak":["sk"],"slovaque":["sk"],"danish":["da"],"danois":["da"],"estonian":["et"],"estonien":["et"],"tigrinya":["ti"],"tigrigna":["ti"],"amharic":["am"],"amharique":["am"],"finnish":["fi"],"finnois":["fi"],"fijian":["fj"],"fidjien":["fj"],"hindi":["hi"],"urdu":["ur"],"ourdou":["ur"],"faroese":["fo"],"feroien":["fo"],"georgian":["ka"],"georgien":["ka"],"kalaallisut":["kl"],"greenlandic":["kl"],"groenlandais":["kl"],"chamorro":["ch"],"haitian":["ht"],"creole":["ht"],"haitien":["ht"],"hungarian":["hu"],"hongrois":["hu"],"indonesian":["id"],"indonesien":["id"],"irish":["ga"],"irlandais":["ga"],"hebrew":["he"],"hebreu":["he"],"manx":["gv"],"mannois":["gv"],"persian":["fa"],"persan":["fa"],"icelandic":["is"],"islandais":["is"],"japanese":["ja"],"japonais":["ja"],"kirghiz":["ky"],"kyrgyz":["ky"],"central":["km"],"khmer":["km"],"korean":["ko"],"coreen":["ko"],"kazakh":["kk"],"lao":["lo"],"sinhala":["si"],"sinhalese":["si"],"singhalais":["si"],"tamil":["ta"],"tamoul":["ta"],"sotho":["st"],"southern":["st"],"du":["st","nr","nd"],"sud":["st","nr"],"lithuanian":["lt"],"lituanien":["lt"],"luxembourgish":["lb"],"letzeburgesch":["lb"],"luxembourgeois":["lb"],"latvian":["lv"],"letton":["lv"],"romanian":["ro"],"moldavian":["ro"],"moldovan":["ro"],"roumain":["ro"],"moldave":["ro"],"malagasy":["mg"],"malgache":["mg"],"marshallese":["mh"],"marshall":["mh"],"macedonian":["mk"],"macedonien":["mk"],"burmese":["my"],"birman":["my"],"mongolian":["mn"],"mongol":["mn"],"maltese":["mt"],"maltais":["mt"],"divehi":["dv"],"dhivehi":["dv"],"maldivian":["dv"],"maldivien":["dv"],"chichewa":["ny"],"chewa":["ny"],"nyanja":["ny"],"afrikaans":["af"],"bokmal":["nb"],"norwegian":["nb","nn","no"],"norvegien":["nb","nn","no"],"nynorsk":["nn"],"nepali":["ne"],"nepalais":["ne"],"nauru":["na"],"nauruan":["na"],"tagalog":["tl"],"polish":["pl"],"polonais":["pl"],"kinyarwanda":["rw"],"rwanda":["rw"],"slovenian":["sl"],"slovene":["sl"],"somali":["so"],"swati":["ss"],"thai":["th"],"tajik":["tg"],"tadjik":["tg"],"tonga":["to"],"islands":["to"],"tongan":["to"],"iles":["to"],"ukrainian":["uk"],"ukrainien":["uk"],"latin":["la"],"vietnamese":["vi"],"vietnamien":["vi"],"bislama":["bi"],"bichlamar":["bi"],"ndebele":["nr","nd"],"south":["nr"],"tsonga":["ts"],"venda":["ve"],"xhosa":["xh"],"zulu":["zu"],"zoulou":["zu"],"shona":["sn"],"north":["nd"],"nord":["nd"]}
data/lib/atlasq/cache.rb CHANGED
@@ -13,14 +13,11 @@ module Atlasq
13
13
  @get ||= {}
14
14
  @get.fetch(full_name) do
15
15
  path = "#{CACHE_DIR}/#{full_name}"
16
+
16
17
  content = File.read(path)
18
+ content = JSON.parse(content) if full_name.end_with?(".json")
17
19
 
18
- case full_name
19
- when /\.json$/
20
- JSON.parse(content)
21
- else
22
- content
23
- end
20
+ @get[full_name] = content
24
21
  end
25
22
  end
26
23
  end
@@ -5,6 +5,7 @@ require_relative "base"
5
5
  module Atlasq
6
6
  module Command
7
7
  class Any < Base
8
+ # @return [String]
8
9
  def content
9
10
  search_terms.map do |term|
10
11
  if (country = Data.country(term))
@@ -14,6 +15,8 @@ module Atlasq
14
15
  Format.countries(country_codes, title: "Region: #{region_name}")
15
16
  elsif (currencies = Data.countries_by_currencies(term))
16
17
  Format.currencies(currencies)
18
+ elsif (languages = Data.countries_by_languages(term))
19
+ Format.languages(languages)
17
20
  else
18
21
  Atlasq.failed!
19
22
  "Unknown search term: #{term}"
@@ -61,6 +61,14 @@ module Atlasq
61
61
  3. symbol
62
62
  4. partial match on name
63
63
 
64
+ -l/--language
65
+ : Display all countries by language
66
+ -l/--language [query ...]
67
+ : Search for countries by the following criteria
68
+ 1. alpha2 (ISO639 standard 2 letter code)
69
+ 2. alpha3 (ISO639 standard 3 letter code)
70
+ 3. partial match on name in English or French
71
+
64
72
  -h/--help
65
73
  : Display this page
66
74
 
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module Atlasq
6
+ module Command
7
+ class Language < Base
8
+ # @return [String]
9
+ def content
10
+ if search_terms.empty?
11
+ languages = Data.all_languages
12
+ Format.languages(languages)
13
+ else
14
+ search_terms.map do |term|
15
+ if (languages = Data.countries_by_languages(term))
16
+ Format.languages(languages)
17
+ elsif (currency_codes = PartialMatch.languages(term)).any?
18
+ languages = Data.countries_by_languages(currency_codes)
19
+ Format.languages(languages, partial_match: true)
20
+ else
21
+ Atlasq.failed!
22
+ "Unknown language: #{term}"
23
+ end
24
+ end.join("\n\n")
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -5,6 +5,7 @@ require_relative "base"
5
5
  module Atlasq
6
6
  module Command
7
7
  class Money < Base
8
+ # @return [String]
8
9
  def content
9
10
  if search_terms.empty?
10
11
  currencies = Data.all_currencies
@@ -5,6 +5,7 @@ require_relative "base"
5
5
  module Atlasq
6
6
  module Command
7
7
  class Region < Base
8
+ # @return [String]
8
9
  def content
9
10
  if search_terms.empty?
10
11
  subregions = Data.all_subregions
@@ -4,6 +4,7 @@ module Atlasq
4
4
  module Command
5
5
  autoload :Any, "atlasq/command/any"
6
6
  autoload :Country, "atlasq/command/country"
7
+ autoload :Language, "atlasq/command/language"
7
8
  autoload :Region, "atlasq/command/region"
8
9
  autoload :Money, "atlasq/command/money"
9
10
  autoload :Version, "atlasq/command/version"
@@ -14,6 +15,8 @@ module Atlasq
14
15
  # @param args [Array<String>]
15
16
  Options = Struct.new(:command, :args, keyword_init: true)
16
17
 
18
+ # @param args [Array<String>] command line arguments
19
+ # @return [Atlasq::Command::Options]
17
20
  def self.parse(args)
18
21
  command = parse_command(args.first)
19
22
  args.shift unless command.to_s == "Atlasq::Command::Any"
@@ -22,10 +25,14 @@ module Atlasq
22
25
  Options.new(command: command, args: args).freeze
23
26
  end
24
27
 
28
+ # @param command [String]
29
+ # @return [Atlasq::Command::Base]
25
30
  def self.parse_command(command)
26
31
  case command
27
32
  when "-c", "--country", "--countries"
28
33
  Country
34
+ when "-l", "--language", "--languages"
35
+ Language
29
36
  when "-r", "--region", "--regions"
30
37
  Region
31
38
  when "-m", "--money"
data/lib/atlasq/data.rb CHANGED
@@ -52,5 +52,26 @@ module Atlasq
52
52
  def self.all_currencies
53
53
  Cache.get("search_index/countries_by_currency.json")
54
54
  end
55
+
56
+ # @param terms [String, Array<String>] search terms
57
+ # @return [Hash<String, Array<String>>] ISO639 2 letter language code to ISO3166 2 letter country codes
58
+ def self.countries_by_languages(terms)
59
+ terms = Array(terms)
60
+ languages = Cache
61
+ .get("search_index/direct_match_language.json")
62
+ .values_at(*terms)
63
+ .compact
64
+
65
+ return if languages.empty?
66
+
67
+ Cache
68
+ .get("search_index/countries_by_language.json")
69
+ .slice(*languages)
70
+ end
71
+
72
+ # @return [Hash<String, Array<String>>] ISO639 2 letter language code to ISO3166 2 letter country codes
73
+ def self.all_languages
74
+ Cache.get("search_index/countries_by_language.json")
75
+ end
55
76
  end
56
77
  end
data/lib/atlasq/format.rb CHANGED
@@ -141,10 +141,41 @@ module Atlasq
141
141
  end
142
142
  end
143
143
 
144
+ # @param currency_code [String]
145
+ # @return [String]
144
146
  def self.one_line_currency(currency_code)
145
147
  Cache
146
148
  .get("formatted_output/one_line_currency.json")
147
149
  .fetch(currency_code)
148
150
  end
151
+
152
+ # @param languages [Hash<String, Array<String>>] 2 letter ISO639 language code to ISO3166 2 letter country codes
153
+ # @param partial_match [Boolean] defaults to false
154
+ # @return [String]
155
+ def self.languages(languages, partial_match: false)
156
+ languages = languages.to_h do |language, countries|
157
+ [
158
+ Format.one_line_language(language),
159
+ countries.map(&Format.method(:one_line_country)),
160
+ ]
161
+ end
162
+
163
+ if !partial_match && languages.size == 1
164
+ title, elements = languages.first
165
+ title = "Language: #{title}"
166
+ Format.brief_template(title: title, elements: elements)
167
+ else
168
+ title = partial_match ? "Languages (Partial Match)" : "Languages"
169
+ Format.brief_template(title: title, elements: languages)
170
+ end
171
+ end
172
+
173
+ # @param language [String] 2 letter ISO639 language code
174
+ # @return [String]
175
+ def self.one_line_language(language)
176
+ Cache
177
+ .get("formatted_output/one_line_language.json")
178
+ .fetch(language)
179
+ end
149
180
  end
150
181
  end
@@ -15,5 +15,12 @@ module Atlasq
15
15
  @currencies ||= Util::WordMap.new(index: Cache.get("search_index/partial_match_currency.json"))
16
16
  @currencies.search(term)
17
17
  end
18
+
19
+ # @param term [String]
20
+ # @return [Array<String>] 2 letter language codes (ISO639)
21
+ def self.languages(term)
22
+ @languages ||= Util::WordMap.new(index: Cache.get("search_index/partial_match_language.json"))
23
+ @languages.search(term)
24
+ end
18
25
  end
19
26
  end
data/lib/atlasq/shell.rb CHANGED
@@ -4,6 +4,7 @@ module Atlasq
4
4
  module Shell
5
5
  SKIP_PAGER = %i[usage version].freeze
6
6
 
7
+ # @param [Array<String>] command line arguments
7
8
  def self.start!(args = ARGV)
8
9
  warn "DEBUG: args: #{args}" if DEBUG
9
10
  options = Command.parse(args)
@@ -24,6 +25,9 @@ module Atlasq
24
25
 
25
26
  DEFAULT_SHELL_HEIGHT = 24
26
27
 
28
+ # @param options [Atlasq::Command::Options]
29
+ # @param content [String]
30
+ # @return [Boolean]
27
31
  def self.use_pager?(options, content)
28
32
  $stdout.tty? &&
29
33
  options.command.to_pager? &&
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Atlasq
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/atlasq.rb CHANGED
@@ -18,6 +18,7 @@ module Atlasq
18
18
  @failed = true
19
19
  end
20
20
 
21
+ # @return [Boolean]
21
22
  def self.failed?
22
23
  !!@failed
23
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atlasq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Robell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-31 00:00:00.000000000 Z
11
+ date: 2024-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tty-pager
@@ -38,14 +38,18 @@ files:
38
38
  - cache/formatted_output/multiline_country.json
39
39
  - cache/formatted_output/one_line_country.json
40
40
  - cache/formatted_output/one_line_currency.json
41
+ - cache/formatted_output/one_line_language.json
41
42
  - cache/list/all_countries.json
42
43
  - cache/list/all_subregions.json
43
44
  - cache/search_index/countries_by_currency.json
45
+ - cache/search_index/countries_by_language.json
44
46
  - cache/search_index/countries_by_region.json
45
47
  - cache/search_index/direct_match_country.json
46
48
  - cache/search_index/direct_match_currency.json
49
+ - cache/search_index/direct_match_language.json
47
50
  - cache/search_index/partial_match_country.json
48
51
  - cache/search_index/partial_match_currency.json
52
+ - cache/search_index/partial_match_language.json
49
53
  - exe/atlasq
50
54
  - lib/atlasq.rb
51
55
  - lib/atlasq/cache.rb
@@ -54,6 +58,7 @@ files:
54
58
  - lib/atlasq/command/base.rb
55
59
  - lib/atlasq/command/country.rb
56
60
  - lib/atlasq/command/help.rb
61
+ - lib/atlasq/command/language.rb
57
62
  - lib/atlasq/command/money.rb
58
63
  - lib/atlasq/command/region.rb
59
64
  - lib/atlasq/command/usage.rb