Class: Sinatra::Pagers::PagerAdsQueryAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/sinatra/pagers.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pager, ads, cds_pre, no_query: false) ⇒ PagerAdsQueryAdapter

Returns a new instance of PagerAdsQueryAdapter.



50
51
52
53
54
55
56
57
# File 'lib/sinatra/pagers.rb', line 50

def initialize(pager, ads, cds_pre, no_query:false)
  @pager=pager
  @ads=ads
  @cds_pre=cds_pre
  @cds_out=@cds_pre
  @no_query=no_query
  process
end

Instance Attribute Details

#cds_outObject (readonly)

Returns the value of attribute cds_out.



49
50
51
# File 'lib/sinatra/pagers.rb', line 49

def cds_out
  @cds_out
end

Instance Method Details

#processObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/sinatra/pagers.rb', line 59

def process
  cd_ids=@cds_pre.map(:id)
  if @pager.extra[:decision] and @pager.extra[:decision]!="_no_"
    cd_ids_decision=@ads.decision_by_cd.find_all {|v|
      @pager.extra[:decision]==v[1]
    }.map {|v| v[0]}
    cd_ids=cd_ids & cd_ids_decision
  end
  if @pager.extra[:tag_select]
    selected_tags=[@pager.extra[:tag_select]].flatten
    #$log.info(selected_tags)
    sr=@ads.systematic_review
    cd_id_tag=selected_tags.map {|tag_id|
      TagInCd.cds_rs_tag(sr,Tag[tag_id],true).map(:id)
    }.flatten.uniq
    cd_ids=cd_ids & cd_id_tag
  end

  if @pager.query and !@no_query
    query=@pager.query
    query="title(#{@pager.query})" unless query=~/\(|\)/
    sp=Buhos::SearchParser.new
    sp.parse(query)
    cd_ids = cd_ids & @cds_pre.where(Sequel.lit(sp.to_sql)).select_map(:id)
  end

  @cds_out=@cds_pre.where(:id => cd_ids)
end