| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * Copyright 2017, gRPC Authors All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- import Stencil
- import Foundation
- // A class for loading Stencil templates from compiled-in representations
- public class InternalLoader: Loader {
- private var templates: [String:String]
- public init() {
- self.templates = loadTemplates()
- }
- public func loadTemplate(name: String, environment: Environment) throws -> Template {
- if let encoding = templates[name],
- let data = Data(base64Encoded: encoding, options:[]),
- let template = String(data:data, encoding:.utf8) {
- return environment.templateClass.init(templateString: template,
- environment: environment,
- name: name)
- } else {
- throw TemplateDoesNotExist(templateNames: [name], loader: self)
- }
- }
- public func loadTemplate(names: [String], environment: Environment) throws -> Template {
- for name in names {
- if let encoding = templates[name],
- let data = Data(base64Encoded: encoding, options:[]),
- let template = String(data:data, encoding:.utf8) {
- return environment.templateClass.init(templateString: template,
- environment: environment,
- name: name)
- }
- }
- throw TemplateDoesNotExist(templateNames: names, loader: self)
- }
- }
|