<commit_before>﻿using System;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Text;
using Bjd.Controls;
using Bjd.Net;
using Bjd.Utils;

namespace Bjd.Options
{
    //1つの値を表現するクラス<br>
    //ListValと共に再帰処理が可能になっている<br>
    public class OneVal : IDisposable
    {

        public String Name { get; private set; }
        public Object Value { get; private set; }
        public Crlf Crlf { get; private set; }

        public CtrlType CtrlType { get; private set; }

        public Type ValueType { get; private set; }

        public bool IsSecret { get; private set; }

        public OneVal(CtrlType type, String name, Object value, Crlf crlf) : this(type, name, value, crlf, false)
        {
        }

        public OneVal(CtrlType type, String name, Object value, Crlf crlf, bool isSecret)
        {
            this.CtrlType = type;
            this.Name = name;
            this.Value = value;
            this.Crlf = crlf;
            this.IsSecret = isSecret;
            if (value != null)
                this.ValueType = value.GetType();


            //*************************************************************
            //仕様上、階層構造をなすOneValの名前は、ユニークである必要がる
            //プログラム作成時に重複を発見できるように、重複があった場合、ここでエラーをポップアップする
            //*************************************************************

            //名前一覧
            var tmp = new List<String>();

            //このlistの中に重複が無いかどうかをまず確認する
            List<OneVal> list = GetList(null);
            foreach (OneVal o in list)
            {
                if (0 <= tmp.IndexOf(o.Name))
                {
                    //名前一覧に重複は無いか
                    Console.WriteLine(String.Format("OneVal(OnePage)の名前に重複があります {0}", o.Name));
                    //Msg.Show(MsgKind.Error, String.Format("OneVal(OnePage)の名前に重複があります {0}", o.Name));
                }
                tmp.Add(o.Name); //名前一覧への蓄積
            }

        }

        //Ver6.0.0
        public void SetValue(object value)
        {
            Value = value;

        }

        // 階層下のOneValを一覧する
        public List<OneVal> GetList(List<OneVal> list)
        {
            if (list == null)
            {
                list = new List<OneVal>();
            }
            if (this.ValueType == typeof(Dat))
            {
                ((Dat)this.Value).GetList(list);
            }
            list.Add(this);
            return list;
        }

        public List<OneVal> GetSaveList(List<OneVal> list)
        {
            if (list == null)
            {
                list = new List<OneVal>();
            }
            list.Add(this);
            return list;
        }


        public void Dispose() { }


        //設定ファイル(Option.ini)への出力
        //isSecret=true デバッグ用の設定ファイル出力用（パスワード等を***で表現する）
        public String ToReg(bool isSecret)
        {
            switch (this.CtrlType)
            {
                case CtrlType.CheckBox:
                    return ((bool)Value).ToString().ToLower();<commit_msg>fix error<commit_after>﻿using System;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Text;
using Bjd.Controls;
using Bjd.Net;
using Bjd.Utils;

namespace Bjd.Options
{
    //1つの値を表現するクラス<br>
    //ListValと共に再帰処理が可能になっている<br>
    public class OneVal : IDisposable
    {

        public String Name { get; private set; }
        public Object Value { get; private set; }
        public Crlf Crlf { get; private set; }

        public CtrlType CtrlType { get; private set; }

        public Type ValueType { get; private set; }

        public bool IsSecret { get; private set; }

        public OneVal(CtrlType type, String name, Object value, Crlf crlf) : this(type, name, value, crlf, false)
        {
        }

        public OneVal(CtrlType type, String name, Object value, Crlf crlf, bool isSecret)
        {
            this.CtrlType = type;
            this.Name = name;
            this.Value = value;
            this.Crlf = crlf;
            this.IsSecret = isSecret;
            if (value != null)
                this.ValueType = value.GetType();


            //*************************************************************
            //仕様上、階層構造をなすOneValの名前は、ユニークである必要がる
            //プログラム作成時に重複を発見できるように、重複があった場合、ここでエラーをポップアップする
            //*************************************************************

            //名前一覧
            var tmp = new List<String>();

            //このlistの中に重複が無いかどうかをまず確認する
            List<OneVal> list = GetList(null);
            foreach (OneVal o in list)
            {
                if (0 <= tmp.IndexOf(o.Name))
                {
                    //名前一覧に重複は無いか
                    Console.WriteLine(String.Format("OneVal(OnePage)の名前に重複があります {0}", o.Name));
                    //Msg.Show(MsgKind.Error, String.Format("OneVal(OnePage)の名前に重複があります {0}", o.Name));
                }
                tmp.Add(o.Name); //名前一覧への蓄積
            }

        }

        //Ver6.0.0
        public void SetValue(object value)
        {
            Value = value;

        }

        // 階層下のOneValを一覧する
        public List<OneVal> GetList(List<OneVal> list)
        {
            if (list == null)
            {
                list = new List<OneVal>();
            }
            if (this.ValueType == typeof(Dat) && (this.Value as Dat != null))
            {
                ((Dat)this.Value).GetList(list);
            }
            list.Add(this);
            return list;
        }

        public List<OneVal> GetSaveList(List<OneVal> list)
        {
            if (list == null)
            {
                list = new List<OneVal>();
            }
            list.Add(this);
            return list;
        }


        public void Dispose() { }


        //設定ファイル(Option.ini)への出力
        //isSecret=true デバッグ用の設定ファイル出力用（パスワード等を***で表現する）
        public String ToReg(bool isSecret)
        {
            switch (this.CtrlType)
            {
                case CtrlType.CheckBox:
                    return ((bool)Value).ToString().ToLower();
{'fraction_non_alphanumeric': 0.14219653179190753, 'fraction_numerical': 0.0023121387283236996, 'mean_word_length': 1.5349518627040604, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 23, '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': '7041115', 'n_tokens_mistral': 2032, 'n_tokens_neox': 1945, 'n_words': 370}