Translation works
This commit is contained in:
		@@ -11,15 +11,50 @@ class TokiDictionaryViewModel: ObservableObject
 | 
			
		||||
{
 | 
			
		||||
    let jsonLoader: TokiJSONLoader = TokiJSONLoader()
 | 
			
		||||
    
 | 
			
		||||
    private var fullDictionary: [TokiDictEntry] = []
 | 
			
		||||
    private var fullPartsOfSpeech: [TokiPartOfSpeech] = []
 | 
			
		||||
    
 | 
			
		||||
    @Published var dictionary: [TokiDictEntry] = []
 | 
			
		||||
    @Published var partsOfSpeech: [TokiPartOfSpeech] = []
 | 
			
		||||
    
 | 
			
		||||
    init() {
 | 
			
		||||
        if let safeDictionary = jsonLoader.loadDictionary() {
 | 
			
		||||
            dictionary = safeDictionary
 | 
			
		||||
            fullDictionary = safeDictionary
 | 
			
		||||
        }
 | 
			
		||||
        if let safePartsOfSpeech = jsonLoader.loadPOS() {
 | 
			
		||||
            partsOfSpeech = safePartsOfSpeech
 | 
			
		||||
            fullPartsOfSpeech = safePartsOfSpeech
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    func filterDictionary(_ input: String) {
 | 
			
		||||
        dictionary = []
 | 
			
		||||
        if(input.isEmpty) {
 | 
			
		||||
            dictionary = fullDictionary
 | 
			
		||||
        } else {
 | 
			
		||||
            let capturePattern = #"(\w+)"#
 | 
			
		||||
            let captures = self.searchStringForRegex(string: input, regex: capturePattern)
 | 
			
		||||
            for capture in captures {
 | 
			
		||||
                print(capture)
 | 
			
		||||
                for value in fullDictionary {
 | 
			
		||||
                    if value.word == capture {
 | 
			
		||||
                        dictionary.append(value)
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    func searchStringForRegex(string: String, regex: String) -> [String] {
 | 
			
		||||
        let lowerCaseString = string.lowercased()
 | 
			
		||||
        let strRange = NSRange(lowerCaseString.startIndex..<lowerCaseString.endIndex, in: lowerCaseString)
 | 
			
		||||
        let nameRegex = try! NSRegularExpression(pattern: regex, options: [])
 | 
			
		||||
        
 | 
			
		||||
        let results = nameRegex.matches(in: lowerCaseString, options: [], range: strRange)
 | 
			
		||||
        
 | 
			
		||||
        return results.map {
 | 
			
		||||
            String(lowerCaseString[Range($0.range, in: lowerCaseString)!])
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,12 +17,18 @@ struct ContentView: View {
 | 
			
		||||
    
 | 
			
		||||
    @ObservedObject var tokiDictViewModel = TokiDictionaryViewModel()
 | 
			
		||||
    @State private var selectedPartOfSpeech: String? = nil
 | 
			
		||||
    @State private var tokiInput: String = ""
 | 
			
		||||
    
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        VStack {
 | 
			
		||||
            TextField("Enter Toki Pona Word or Phrase", text: /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Value@*/.constant("")/*@END_MENU_TOKEN@*/)
 | 
			
		||||
            TextField("Enter Toki Pona Word or Phrase", text: $tokiInput)
 | 
			
		||||
                .multilineTextAlignment(.center)
 | 
			
		||||
                .textInputAutocapitalization(.never)
 | 
			
		||||
                .disableAutocorrection(true)
 | 
			
		||||
                .padding(8)
 | 
			
		||||
                .onSubmit {
 | 
			
		||||
                    tokiDictViewModel.filterDictionary(tokiInput)
 | 
			
		||||
                }
 | 
			
		||||
            List(tokiDictViewModel.dictionary, id: \.word) { entry in
 | 
			
		||||
                VStack(alignment: .leading) {
 | 
			
		||||
                    Text(entry.word)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user