<commit_before>﻿using iTextSharp.text.exceptions;
using Microsoft.Win32;
using Reactive.Bindings;
using System;
using System.IO;
using System.Reactive.Linq;

namespace UnlockPdf.ViewModels
{
    class MainWindowViewModel
    {
        /// <summary>
        /// 新しいインスタンスを初期化します。
        /// </summary>
        public MainWindowViewModel()
        {
            // set

            PdfPath = new ReactiveProperty<string>();
            Password = new ReactiveProperty<string>();

            var isExistsPdf = PdfPath
                .Select(x => x ?? string.Empty)
                .Select(x => x.Trim('"'))
                .Select(x => File.Exists(x));

            var hasPassword = Password
                 .Select(x => !string.IsNullOrWhiteSpace(x));

            Status = Observable.CombineLatest(
                    isExistsPdf,
                    hasPassword,
                    (x, y) => !x
                        ? "PDF ファイルを選択してください"
                        : !y
                            ? "パスワードを入力してください"
                            : "[ENTER] キーまたは [UNLOCK] ボタンを押してください")
                .ToReactiveProperty();
<commit_msg>Formatted source<commit_after>﻿using iTextSharp.text.exceptions;
using Microsoft.Win32;
using Reactive.Bindings;
using System;
using System.IO;
using System.Reactive.Linq;

namespace UnlockPdf.ViewModels
{
    class MainWindowViewModel
    {
        /// <summary>
        /// 新しいインスタンスを初期化します。
        /// </summary>
        public MainWindowViewModel()
        {
            // set

            PdfPath = new ReactiveProperty<string>();
            Password = new ReactiveProperty<string>();

            var isExistsPdf = PdfPath
                .Select(x => x ?? string.Empty)
                .Select(x => x.Trim('"'))
                .Select(x => File.Exists(x));

            var hasPassword = Password
                .Select(x => !string.IsNullOrWhiteSpace(x));

            Status = Observable.CombineLatest(
                    isExistsPdf,
                    hasPassword,
                    (x, y) => !x
                        ? "PDF ファイルを選択してください"
                        : !y
                            ? "パスワードを入力してください"
                            : "[ENTER] キーまたは [UNLOCK] ボタンを押してください")
                .ToReactiveProperty();

{'fraction_non_alphanumeric': 0.10751748251748251, 'fraction_numerical': 0.0017482517482517483, 'mean_word_length': 1.3769470404984423, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 21, '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': '6713772', 'n_tokens_mistral': 720, 'n_tokens_neox': 672, 'n_words': 119}