<commit_before>require 'json'

class String
  def ttlz
    self.mb_chars.titleize.to_s
  end
end

namespace :persist do

  # Persist members, question, speeches
  task :msqs => :environment do

    members_str = %x{cat directory/to/mp-info.json}
    members_str.each_line do |member|
      member_ob = JSON.load member

      # find member - this will merge profiles
      member = Member.find_by_names_and_bd(
        member_ob['first_name'].ttlz,
        member_ob['sir_name'].ttlz,
        member_ob['last_name'].ttlz,
        member_ob['date_of_birth']
      )

      member_ob['structures'].each do |s|

        type = case s['type']
          when "Членове на Народно събрание" then "assembly"
          when "Парламентарни групи" then "party"
          when "Постоянни парламентарни комисии" then "comittee"
          when "Временни парламентарни комисии" then "t_comittee"
          when "Парламентарни подкомисии" then "subcomittee"
          when "Парламентарни делегации" then "delegation"
          when "Групи за приятелство" then "f_group"
          else "Unknown type"
        end

        name = s['name']
        if type == "party"
          name = name
            .gsub("Парламентарна група на ", "").gsub("Парламентарен съюз на ", "")
            .gsub("Парламентарна група ", "").gsub("&quot;", "")
            .gsub("партия АТАКА", "Атака")
            .gsub("партия Атака", "Атака")
            .gsub("Коалиция Атака", "Атака")
            .gsub("Нечленуващи в ПГ", "Независими")
        end

        if type == "assembly"
          name = name
            .gsub("39-то Народно Събрание", "39-то Народно събрание")
            .gsub("41-о Народно събрание", "41-во Народно събрание")
        end

        name = name.mb_chars.downcase.capitalize.to_s if type == "comittee"

        name = name.gsub("\n", "").gsub("\r\n", "")

        structure = Structure.find_or_create_by(name: name, kind: Structure.kinds[type.to_sym])
        constituency = type == "party" ? member_ob['constituency'] : nil
        Participation.create({
          member: member,
          structure: structure,
          position: s['position'],
          start_date: s['from'],
          end_date: s['to'],
          constituency: constituency
        })
      end

      # assign other information
      prev_gsid = member.gov_site_ids.nil? ? "" : member.gov_site_ids.to_s + ", " # append gsids<commit_msg>Added abbreviations to some parties.<commit_after>require 'json'

class String
  def ttlz
    self.mb_chars.titleize.to_s
  end
end

namespace :persist do

  # Persist members, question, speeches
  task :msqs => :environment do

    members_str = %x{cat directory/to/mp-info.json}
    members_str.each_line do |member|
      member_ob = JSON.load member

      # find member - this will merge profiles
      member = Member.find_by_names_and_bd(
        member_ob['first_name'].ttlz,
        member_ob['sir_name'].ttlz,
        member_ob['last_name'].ttlz,
        member_ob['date_of_birth']
      )

      member_ob['structures'].each do |s|

        abbreviation = ""
        abbreviations = {
          "ПП ГЕРБ" => "ГЕРБ",
          "Атака" => "Атака",
          "Национално движение Симеон Втори" => "НДСВ",
          "Национално движение за стабилност и възход" => "НДСВ",
          "Коалиция за България" => "КБ",
          "Ред, законност и справедливост" => "РЗС",
          "Движение за права и свободи" => "ДПС",
          "Синята коалиция - СДС, ДСБ, Обединени земеделци, БСДП, РДП" => "СК",
        }

        type = case s['type']
          when "Членове на Народно събрание" then "assembly"
          when "Парламентарни групи" then "party"
          when "Постоянни парламентарни комисии" then "comittee"
          when "Временни парламентарни комисии" then "t_comittee"
          when "Парламентарни подкомисии" then "subcomittee"
          when "Парламентарни делегации" then "delegation"
          when "Групи за приятелство" then "f_group"
          else "Unknown type"
        end

        name = s['name']
        if type == "party"
          name = name
            .gsub("Парламентарна група на ", "").gsub("Парламентарен съюз на ", "")
            .gsub("Парламентарна група ", "").gsub("&quot;", "")
            .gsub("партия АТАКА", "Атака")
            .gsub("партия Атака", "Атака")
            .gsub("Коалиция Атака", "Атака")
            .gsub("Нечленуващи в ПГ", "Независими")


          abbreviation = abbreviations[name]
        end

        if type == "assembly"
          name = name
            .gsub("39-то Народно Събрание", "39-то Народно събрание")
            .gsub("41-о Народно събрание", "41-во Народно събрание")
        end

        name = name.mb_chars.downcase.capitalize.to_s if type == "comittee"

        name = name.gsub("\n", "").gsub("\r\n", "")

        structure = Structure.find_or_create_by(name: name, kind: Structure.kinds[type.to_sym], abbreviation: abbreviation)
        constituency = type == "party" ? member_ob['constituency'] : nil
        Participation.create({
          member: member,
          structure: structure,
          position: s['position'],
          start_date: s['from'],
          end_date: s['to'],
          constituency: constituency
        })
      end

      # assign other information
      prev_gsid = member.gov_site_ids.nil? ? "" : member.gov_site_ids.to_s + ", " # append gsids
{'fraction_non_alphanumeric': 0.12344301914854063, 'fraction_numerical': 0.002974530581892545, 'mean_word_length': 2.248792270531401, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3843440', 'n_tokens_mistral': 1899, 'n_tokens_neox': 1953, 'n_words': 408}