Sha256: 916c947cc5776d2b28dff85d5d5312d9c1c6695ebb35cf8e6b11a1e0ff260c55
Contents?: true
Size: 891 Bytes
Versions: 3
Compression:
Stored size: 891 Bytes
Contents
# frozen_string_literal: true module Jumon class Subject attr_reader :template, :variables, :subjects def initialize(base) @template = base[:subject] @variables = base[:variables] @subjects = [@template] end def set_subjects return unless variables add_subject(0, 0) @subjects = @subjects.uniq.reject do |s| variables.any? { |v| s.include?("{{#{v[:name]}}}") } end end def add_subject(var_i, pat_i) copy = subjects.dup copy.each do |c| result = c.gsub( "{{#{variables[var_i][:name]}}}", variables[var_i][:patterns][pat_i] ) @subjects.push(result) end if pat_i < variables[var_i][:patterns].length - 1 add_subject(var_i, pat_i + 1) elsif var_i < variables.length - 1 add_subject(var_i + 1, 0) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jumon-0.1.2 | lib/jumon/subject.rb |
jumon-0.1.1 | lib/jumon/subject.rb |
jumon-0.1.0 | lib/jumon/subject.rb |