# CutBox.app

## Coverage Report

#### Created: 2024-03-12 03:40

    .../Source/App/Preferences/PreferencesPastePipelineView.swift

    Line

    Count

    Source (jump to first uncovered line)

    1

    //

    2

    //  PreferencesJavascriptTransformView.swift

    3

    //  CutBox

    4

    //

    5

    //  Created by Jason Milkins on 13/5/18.

    6

    //  Copyright © 2018-2023 ocodo. All rights reserved.

    7

    //

    8

    9

    import Cocoa

    10

    import RxSwift

    11

    12

    class PreferencesPastePipelineView: CutBoxBaseView {

    13

    14

        var prefs: CutBoxPreferencesService!

    15

    51

        var js = JSFuncService()

    16

    51

        let disposeBag = DisposeBag()

    17

    18

        @IBOutlet weak var javascriptTransformSectionTitle: CutBoxBaseTextField!

    19

        @IBOutlet weak var javascriptReplCommandLine: CutBoxBaseTextField!

    20

        @IBOutlet weak var javascriptTransformInfo: CutBoxBaseTextField!

    21

        @IBOutlet weak var javascriptTransformREPLOutput: CutBoxBaseTextView!

    22

        @IBOutlet weak var javascriptTransformReloadButton: CutBoxBaseButton!

    23

        @IBOutlet weak var javascriptClearReplButton: CutBoxBaseButton!

    24

    25

    49

        override func awakeFromNib() {

    26

    49

            self.prefs = CutBoxPreferencesService.shared

    27

    49

    28

    49

            applyJavascriptREPLTheme()

    29

    49

            setupJavascriptTransformSection()

    30

    49

        }

    31

    32

    1

        func focusReplCommandLine() {

    33

    1

            if let replTextField = javascriptReplCommandLine {

    34

    1

                self.window?.makeFirstResponder(replTextField)

    35

    1

                if let editor = replTextField.currentEditor() as? CutBoxBaseTextView {

    36

    1

                    let size = editor.string.count

    37

    1

                    editor.setSelectedRange(NSRange(location: size, length: 0))

    38

    1

                }

    39

    1

            }

    40

    1

        }

    41

    42

    49

        func applyJavascriptREPLTheme() {

    43

    49

            let textColor = NSColor.white

    44

    49

            let backgroundColor = NSColor.black

    45

    49

            let commandLineBackground = #colorLiteral(red: 0.03556041353, green: 0.08317251856, blue: 0.1092823802, alpha: 1)

    46

    49

    47

    49

            self.javascriptTransformREPLOutput.font = NSFont.userFixedPitchFont(ofSize: 13)

    48

    49

            self.javascriptTransformREPLOutput.textColor = textColor

    49

    49

            self.javascriptTransformREPLOutput.backgroundColor = backgroundColor

    50

    49

    51

    49

            self.javascriptReplCommandLine.font = NSFont.userFixedPitchFont(ofSize: 13)

    52

    49

            self.javascriptReplCommandLine.textColor = textColor

    53

    49

            self.javascriptReplCommandLine.backgroundColor = commandLineBackground

    54

    49

        }

    55

    56

    49

        func setupJavascriptTransformSection() {

    57

    49

            self.javascriptTransformSectionTitle

    58

    49

                .stringValue = "preferences_javascript_transform_section_title".l7n

    59

    49

    60

    49

            self.javascriptTransformInfo

    61

    49

                .stringValue = "preferences_javascript_transform_section_note".l7n

    62

    49

    63

    49

            self.javascriptTransformREPLOutput

    64

    49

                .string = "preferences_javascript_repl_help".l7n

    65

    49

    66

    49

            self.javascriptTransformReloadButton

    67

    49

                .title = "preferences_javascript_transform_reload".l7n

    68

    49

    69

    49

            self.javascriptClearReplButton

    70

    49

                .title = "preferences_javascript_clear_button".l7n

    71

    49

    72

    49

            self.javascriptClearReplButton.rx.tap

    73

    49

                .bind(onNext: { self.javascriptTransformREPLOutput.string = "" })

    74

    49

                .disposed(by: disposeBag)

    75

    49

    76

    49

            self.javascriptTransformReloadButton.rx.tap

    77

    49

                .bind(onNext: self.prefs.loadJavascript)

    $s15CutBoxUnitTests28PreferencesPastePipelineViewC31setupJavascriptTransformSectionyyFyycAA0abE7ServiceCcfu_

    Line

    Count

    Source

    77

    49

                .bind(onNext: self.prefs.loadJavascript)

    Unexecuted instantiation: $s15CutBoxUnitTests28PreferencesPastePipelineViewC31setupJavascriptTransformSectionyyFyycAA0abE7ServiceCcfu_yycfu0_

    78

    49

                .disposed(by: disposeBag)

    79

    49

        }

    80

    81

    1

        @IBAction func exec(_ sender: AnyObject) {

    82

    1

            let cmd = javascriptReplCommandLine.stringValue

    83

    1

            javascriptReplCommandLine.stringValue = ""

    84

    1

    85

    1

            if !cmd.isEmpty {

    86

    1

                let value = js.repl(cmd)

    87

    1

    88

    1

                append("> " + cmd)

    89

    1

                append(value)

    90

    1

    91

    1

                if let textStorage = javascriptTransformREPLOutput.textStorage {

    92

    1

                    let textCount = textStorage.string.count

    93

    1

                    let location = max(textCount - 1, 0)

    94

    1

                    let range = NSRange(location: location, length: 1)

    95

    1

                    javascriptTransformREPLOutput.scrollRangeToVisible(range)

    96

    1

                }

    97

    1

            }

    98

    1

        }

    99

    100

    2

        private func append(_ string: String) {

    101

    2

            javascriptTransformREPLOutput.string += "\n" + string

    102

    2

        }

    103

    }