├── .dockerignore ├── .github └── workflows │ └── publish.yaml ├── .gitignore ├── LICENSE ├── adm ├── bootstrap.fan ├── buildtz.fan ├── buildunits.fan ├── buildwebdocs.fan ├── checknewlines.fan ├── crush.fan ├── env.rb ├── filereplace.fan ├── genfconst.rb ├── i18nConvert.fan ├── localeEtcToPods.fan ├── pubpods.fan ├── tools │ ├── atom │ │ └── install.fan │ ├── emacs │ │ └── fan-mode.el │ ├── gedit │ │ └── fantom.lang │ ├── jedit │ │ └── fan.xml │ ├── notepadpp │ │ └── Fantom-UDL.xml │ ├── textadept │ │ ├── fantom.lua │ │ └── lexer_tools.lua │ ├── textmate │ │ └── build.fan │ ├── textpad │ │ └── fan.syn │ └── vim │ │ └── fan.vim ├── unixsetup └── updateheader.fan ├── bin ├── fan ├── fan.bat ├── fanc ├── fanc.bat ├── fanlaunch ├── fanlaunch.bat ├── fanp ├── fanp.bat ├── fanr ├── fanr.bat ├── fansc.exe ├── fansh ├── fansh.bat ├── fansubstitute ├── fant ├── fant.bat ├── flux ├── flux.bat ├── jstub ├── jstub.bat └── nstub.exe ├── contrib.md ├── dockerfile ├── etc ├── build │ └── config.props ├── fanr │ └── config.props ├── sql │ └── config.props ├── syntax │ ├── ext.props │ ├── syntax-as.fog │ ├── syntax-axon.fog │ ├── syntax-batch.fog │ ├── syntax-cpp.fog │ ├── syntax-csharp.fog │ ├── syntax-css.fog │ ├── syntax-fan.fog │ ├── syntax-java.fog │ ├── syntax-javascript.fog │ ├── syntax-perl.fog │ ├── syntax-python.fog │ ├── syntax-ruby.fog │ ├── syntax-sedona.fog │ ├── syntax-shell.fog │ ├── syntax-xeto.fog │ ├── syntax-xml.fog │ └── syntax-yaml.fog ├── sys │ ├── config.props │ ├── ext2mime.props │ ├── fan_tz.js │ ├── log.props │ ├── timezone-aliases.props │ ├── timezones.ftz │ ├── tz.js │ └── units.txt └── web │ └── config.props ├── examples ├── build.fan ├── concurrent │ └── actors.fan ├── email │ └── sending.fan ├── index.fog ├── java │ ├── buildjardist.fan │ ├── hello.fan │ └── swing.fan ├── js │ ├── dom.fan │ ├── env.fan │ └── hello.fan ├── sys │ ├── files.fan │ ├── lists.fan │ ├── logging.fan │ ├── maps.fan │ ├── reflection.fan │ ├── stmts.fan │ └── wordcount.fan ├── util │ └── main.fan └── web │ ├── client.fan │ ├── demo.fan │ ├── demo │ ├── dump.fan │ ├── index.html │ └── upload.fan │ ├── hello.fan │ └── websocket.fan ├── readme.md └── src ├── .dockerignore ├── asn1 ├── build.fan ├── fan │ ├── Asn.fan │ ├── AsnErr.fan │ ├── AsnObj.fan │ ├── AsnTag.fan │ ├── ber │ │ ├── BerReader.fan │ │ └── BerWriter.fan │ └── builtin │ │ ├── AsnBin.fan │ │ ├── AsnColl.fan │ │ └── AsnOid.fan └── test │ ├── AsnObjTest.fan │ ├── AsnTagTest.fan │ └── ber │ ├── BerReaderTest.fan │ ├── BerTest.fan │ └── BerWriterTest.fan ├── build ├── build.fan └── fan │ ├── BuildCs.fan │ ├── BuildGroup.fan │ ├── BuildJava.fan │ ├── BuildLog.fan │ ├── BuildPod.fan │ ├── BuildScript.fan │ ├── Facets.fan │ ├── FatalBuildErr.fan │ ├── Main.fan │ ├── TargetMethod.fan │ ├── Task.fan │ └── tasks │ ├── CompileCs.fan │ ├── CompileJava.fan │ ├── CompileJni.fan │ ├── CreateDir.fan │ ├── CreateZip.fan │ ├── Delete.fan │ ├── Exec.fan │ ├── FanScript.fan │ ├── JarDist.fan │ ├── JdkTask.fan │ └── PodRewrite.fan ├── buildall.fan ├── buildboot.fan ├── buildpods.fan ├── compiler ├── build.fan └── fan │ ├── Compiler.fan │ ├── CompilerErr.fan │ ├── CompilerInput.fan │ ├── CompilerLog.fan │ ├── CompilerOutput.fan │ ├── CompilerStep.fan │ ├── CompilerSupport.fan │ ├── Loc.fan │ ├── Main.fan │ ├── assembler │ ├── Assembler.fan │ ├── AttrAsm.fan │ └── CodeAsm.fan │ ├── ast │ ├── AstWriter.fan │ ├── Block.fan │ ├── CompilationUnit.fan │ ├── DefNode.fan │ ├── EnumDef.fan │ ├── Expr.fan │ ├── FacetDef.fan │ ├── FieldDef.fan │ ├── MethodDef.fan │ ├── MethodVar.fan │ ├── Node.fan │ ├── ParamDef.fan │ ├── PodDef.fan │ ├── SlotDef.fan │ ├── Stmt.fan │ ├── TypeDef.fan │ ├── TypeRef.fan │ ├── Using.fan │ └── Visitor.fan │ ├── dsl │ ├── DslPlugin.fan │ ├── RegexDslPlugin.fan │ └── StrDslPlugin.fan │ ├── fcode │ ├── FAttr.fan │ ├── FCodePrinter.fan │ ├── FConst.fan │ ├── FField.fan │ ├── FMethod.fan │ ├── FOp.fan │ ├── FPod.fan │ ├── FPodNamespace.fan │ ├── FPrinter.fan │ ├── FRefs.fan │ ├── FSlot.fan │ ├── FTable.fan │ ├── FType.fan │ ├── FUtil.fan │ ├── Fanp.fan │ └── format.txt │ ├── namespace │ ├── CBridge.fan │ ├── CDepend.fan │ ├── CNamespace.fan │ ├── CNode.fan │ ├── COperators.fan │ ├── CPod.fan │ ├── CSlot.fan │ ├── CType.fan │ ├── GenericTypes.fan │ ├── MockSlot.fan │ ├── NullableType.fan │ ├── ReflectNamespace.fan │ ├── ReflectPod.fan │ ├── ReflectSlot.fan │ ├── ReflectType.fan │ └── TypeParser.fan │ ├── parser │ ├── Parser.fan │ ├── Token.fan │ ├── TokenVal.fan │ └── Tokenizer.fan │ ├── steps │ ├── Assemble.fan │ ├── CheckErrors.fan │ ├── CheckInheritance.fan │ ├── CheckParamDefs.fan │ ├── ClosureToImmutable.fan │ ├── ClosureVars.fan │ ├── CompileJs.fan │ ├── ConstChecks.fan │ ├── DefaultCtor.fan │ ├── GenerateOutput.fan │ ├── Inherit.fan │ ├── InitClosures.fan │ ├── InitEnum.fan │ ├── InitFacet.fan │ ├── InitInput.fan │ ├── LoadPod.fan │ ├── LocaleProps.fan │ ├── Normalize.fan │ ├── OrderByInheritance.fan │ ├── Parse.fan │ ├── ResolveDepends.fan │ ├── ResolveExpr.fan │ ├── ResolveImports.fan │ ├── ScanForUsingsAndTypes.fan │ ├── Tokenize.fan │ └── WritePod.fan │ └── util │ ├── ApiDocWriter.fan │ ├── CallResolver.fan │ ├── Coercer.fan │ └── ConstantFolder.fan ├── compilerDoc ├── build.fan ├── fan │ ├── env │ │ ├── DocCrawler.fan │ │ ├── DocEnv.fan │ │ ├── DocErrHandler.fan │ │ ├── DocLink.fan │ │ └── DocTheme.fan │ ├── model │ │ ├── Doc.fan │ │ ├── DocChapter.fan │ │ ├── DocFacet.fan │ │ ├── DocFlags.fan │ │ ├── DocMisc.fan │ │ ├── DocPod.fan │ │ ├── DocSlot.fan │ │ ├── DocSpace.fan │ │ ├── DocType.fan │ │ └── DocTypeRef.fan │ ├── renderers │ │ ├── DocChapterRenderer.fan │ │ ├── DocPodIndexRenderer.fan │ │ ├── DocRenderer.fan │ │ ├── DocSrcRenderer.fan │ │ ├── DocTopIndexRenderer.fan │ │ └── DocTypeRenderer.fan │ └── util │ │ ├── ApiDocParser.fan │ │ ├── DefaultDocEnv.fan │ │ └── Main.fan ├── res │ └── style.css └── test │ └── DocTypeRefTest.fan ├── compilerEs ├── build.fan └── fan │ ├── CompileEsPlugin.fan │ ├── JsWriter.fan │ ├── ModuleSystem.fan │ ├── ast │ ├── JsClosure.fan │ ├── JsExpr.fan │ ├── JsNode.fan │ ├── JsPod.fan │ ├── JsStmt.fan │ └── JsType.fan │ └── util │ ├── Base64VLQ.fan │ ├── JsExtToMime.fan │ ├── JsIndexedProps.fan │ ├── JsProps.fan │ ├── JsUnitDatabase.fan │ ├── SourceMap.fan │ └── TzTool.fan ├── compilerJava ├── build.fan └── fan │ ├── JavaBridge.fan │ ├── JavaDasmLoader.fan │ ├── JavaPod.fan │ ├── JavaPrimitives.fan │ ├── JavaReflect.fan │ ├── JavaSlot.fan │ ├── JavaType.fan │ ├── cp │ ├── ClassPath.fan │ └── ClassPathModel.fan │ └── dasm │ ├── Dasm.fan │ └── DasmModel.fan ├── compilerJs ├── build.fan ├── fan │ ├── CompileJsPlugin.fan │ ├── JsCompilerSupport.fan │ ├── JsWriter.fan │ ├── ast │ │ ├── JsBlock.fan │ │ ├── JsClosure.fan │ │ ├── JsExpr.fan │ │ ├── JsFacet.fan │ │ ├── JsField.fan │ │ ├── JsMethod.fan │ │ ├── JsNode.fan │ │ ├── JsPod.fan │ │ ├── JsProps.fan │ │ ├── JsSlot.fan │ │ ├── JsStmt.fan │ │ └── JsType.fan │ ├── runner │ │ ├── Dump.fan │ │ ├── NodeRunner.fan │ │ ├── Runner.fan │ │ └── ScriptRunner.fan │ └── util │ │ ├── Base64VLQ.fan │ │ ├── JsExtToMime.fan │ │ ├── JsIndexedProps.fan │ │ ├── JsUnitDatabase.fan │ │ ├── SourceMap.fan │ │ └── TzTool.fan └── res │ ├── scriptRunnerTemplate.js │ └── testRunnerTemplate.js ├── concurrent ├── build.fan ├── dotnet │ ├── Actor.cs │ ├── ActorPool.cs │ ├── Future.cs │ ├── Scheduler.cs │ └── ThreadPool.cs ├── es │ ├── Actor.js │ ├── ActorFuture.js │ ├── ActorPool.js │ ├── AtomicBoolPeer.js │ ├── AtomicIntPeer.js │ ├── AtomicRefPeer.js │ ├── ConcurrentMap.js │ ├── Future.js │ └── Lock.js ├── fan │ ├── Actor.fan │ ├── ActorContext.fan │ ├── ActorMsg.fan │ ├── ActorPool.fan │ ├── AtomicBool.fan │ ├── AtomicInt.fan │ ├── AtomicRef.fan │ ├── ConcurrentMap.fan │ ├── Errs.fan │ ├── Future.fan │ └── Lock.fan ├── java │ ├── Actor.java │ ├── ActorFuture.java │ ├── ActorPool.java │ ├── AtomicBoolPeer.java │ ├── AtomicIntPeer.java │ ├── AtomicRefPeer.java │ ├── ConcurrentMap.java │ ├── Future.java │ ├── Lock.java │ ├── Scheduler.java │ └── ThreadPool.java ├── js │ ├── Actor.js │ ├── ActorFuture.js │ ├── ActorPool.js │ ├── AtomicBoolPeer.js │ ├── AtomicIntPeer.js │ ├── AtomicRefPeer.js │ ├── ConcurrentMap.js │ ├── Future.js │ └── Lock.js └── test │ ├── ActorTest.fan │ ├── AtomicTest.fan │ ├── ConcurrentMapTest.fan │ └── LockTest.fan ├── crypto ├── build.fan ├── fan │ ├── Cert.fan │ ├── CertSigner.fan │ ├── Crypto.fan │ ├── Csr.fan │ ├── Digest.fan │ ├── Jwk.fan │ ├── Jwt.fan │ ├── Key.fan │ ├── KeyStore.fan │ └── NilCrypto.fan └── test │ ├── CryptoTest.fan │ ├── DigestTest.fan │ ├── JwtTest.fan │ └── KeyTest.fan ├── cryptoJava ├── build.fan ├── fan │ ├── JCertSigner.fan │ ├── JCrypto.fan │ ├── JCsr.fan │ ├── JDigest.fan │ ├── JJwk.fan │ ├── JKey.fan │ ├── JKeyStore.fan │ ├── X509.fan │ └── pkcs │ │ ├── Dn.fan │ │ ├── DnParser.fan │ │ ├── Pem.fan │ │ ├── Pkcs1.fan │ │ └── Rdn.fan ├── java │ ├── CertChainLoader.java │ ├── JDigest.java │ ├── JKey.java │ ├── JKeyPairPeer.java │ ├── JKeyStorePeer.java │ ├── JMacKey.java │ ├── JPrivKey.java │ ├── JPubKey.java │ ├── JwEcPubKeyPeer.java │ ├── JwRsaPubKeyPeer.java │ └── X509.java └── test │ ├── DnTest.fan │ └── JwkTest.fan ├── doc ├── build.fan ├── docDomkit │ ├── build.fan │ └── doc │ │ ├── Control-Button-1.png │ │ ├── Control-Checkbox-1.png │ │ ├── Control-Combo-1.png │ │ ├── Control-ListButton-1.png │ │ ├── Control-ListButton-2.png │ │ ├── Control-Menu-1.png │ │ ├── Control-ProgressBar-1.png │ │ ├── Control-RadioButton-1.png │ │ ├── Control-Table-1.png │ │ ├── Control-TextArea-1.png │ │ ├── Control-TextField-1.png │ │ ├── Control-ToggleButton-1.png │ │ ├── Control-Tree-1.png │ │ ├── Controls.fandoc │ │ ├── Dnd.fandoc │ │ ├── Dom.fandoc │ │ ├── Intro.fandoc │ │ ├── Layout-CardBox.png │ │ ├── Layout-FlowBox-1.png │ │ ├── Layout-FlowBox-2.png │ │ ├── Layout-FlowBox-3.png │ │ ├── Layout-GridBox.png │ │ ├── Layout-WellBox-1.png │ │ ├── Layout.fandoc │ │ ├── Modal-Dialog-1.png │ │ ├── Modal-Popup-1.png │ │ ├── Modals.fandoc │ │ ├── Theming.fandoc │ │ └── index.fog ├── docFanr │ ├── build.fan │ └── doc │ │ ├── Concepts.fandoc │ │ ├── FileRepos.fandoc │ │ ├── Queries.fandoc │ │ ├── Tool.fandoc │ │ ├── WebRepos.fandoc │ │ └── index.fog ├── docIntro │ ├── build.fan │ └── doc │ │ ├── ChangeLog.fandoc │ │ ├── Faq.fandoc │ │ ├── HelloWorld.fandoc │ │ ├── License.fandoc │ │ ├── Readme.fandoc │ │ ├── StartHere.fandoc │ │ ├── Tour.fandoc │ │ ├── WhyFantom.fandoc │ │ └── index.fog ├── docLang │ ├── build.fan │ └── doc │ │ ├── Actors.fandoc │ │ ├── Appendix.fandoc │ │ ├── Classes.fandoc │ │ ├── Closures.fandoc │ │ ├── CompilationUnits.fandoc │ │ ├── Concurrency.fandoc │ │ ├── Conventions.fandoc │ │ ├── DSLs.fandoc │ │ ├── DateTime.fandoc │ │ ├── Deployment.fandoc │ │ ├── Enums.fandoc │ │ ├── Env.fandoc │ │ ├── Exceptions.fandoc │ │ ├── Expressions.fandoc │ │ ├── Facets.fandoc │ │ ├── Fields.fandoc │ │ ├── Functions.fandoc │ │ ├── Grammar.fandoc │ │ ├── Inheritance.fandoc │ │ ├── JavaFFI.fandoc │ │ ├── JavaScript.fandoc │ │ ├── Literals.fandoc │ │ ├── Localization.fandoc │ │ ├── Logging.fandoc │ │ ├── Methods.fandoc │ │ ├── Mixins.fandoc │ │ ├── Naming.fandoc │ │ ├── Natives.fandoc │ │ ├── Pods.fandoc │ │ ├── Serialization.fandoc │ │ ├── Slots.fandoc │ │ ├── Statements.fandoc │ │ ├── Structure.fandoc │ │ ├── TypeSystem.fandoc │ │ ├── deployment.png │ │ └── index.fog └── docTools │ ├── build.fan │ └── doc │ ├── Bootstrap.fandoc │ ├── Build.fandoc │ ├── Fan.fandoc │ ├── Fanp.fandoc │ ├── Fansh.fandoc │ ├── Fant.fandoc │ ├── IDEs.fandoc │ ├── Setup.fandoc │ └── index.fog ├── dom ├── build.fan ├── es │ ├── CanvasFontMetrics.js │ ├── CanvasGraphics.js │ ├── CanvasGraphicsPath.js │ ├── DataTransferPeer.js │ ├── DocPeer.js │ ├── DomCoordPeer.js │ ├── DomFilePeer.js │ ├── DomImagePeer.js │ ├── ElemPeer.js │ ├── EventPeer.js │ ├── HttpReqPeer.js │ ├── HttpSocket.js │ ├── MutationObserverPeer.js │ ├── ResizeObserverPeer.js │ ├── StoragePeer.js │ ├── StylePeer.js │ ├── TextSelPeer.js │ ├── WeakMapPeer.js │ └── WinPeer.js ├── fan │ ├── CanvasGraphics.fan │ ├── CssDim.fan │ ├── DataTransfer.fan │ ├── Doc.fan │ ├── DomCoord.fan │ ├── DomFile.fan │ ├── DomGraphicsEnv.fan │ ├── DomImage.fan │ ├── Elem.fan │ ├── Event.fan │ ├── HttpReq.fan │ ├── HttpRes.fan │ ├── HttpSocket.fan │ ├── Key.fan │ ├── KeyFrame.fan │ ├── MutationObserver.fan │ ├── ResizeObserver.fan │ ├── Storage.fan │ ├── Style.fan │ ├── Svg.fan │ ├── TextSel.fan │ ├── WeakMap.fan │ └── Win.fan ├── java │ ├── DataTransferPeer.java │ ├── DocPeer.java │ ├── DomFilePeer.java │ ├── DomPeerFactory.java │ ├── ElemPeer.java │ ├── EventPeer.java │ ├── HttpReqPeer.java │ ├── QuerySelector.java │ ├── StoragePeer.java │ ├── StylePeer.java │ └── WinPeer.java ├── js │ ├── CanvasFontMetrics.js │ ├── CanvasGraphics.js │ ├── CanvasGraphicsPath.js │ ├── DataTransferPeer.js │ ├── DocPeer.js │ ├── DomCoordPeer.js │ ├── DomFilePeer.js │ ├── DomImagePeer.js │ ├── ElemPeer.js │ ├── EventPeer.js │ ├── HttpReqPeer.js │ ├── HttpSocket.js │ ├── MutationObserverPeer.js │ ├── ResizeObserverPeer.js │ ├── StoragePeer.js │ ├── StylePeer.js │ ├── TextSelPeer.js │ ├── WeakMapPeer.js │ └── WinPeer.js ├── pod.fandoc ├── test.fan └── test │ ├── ClipboardTest.fan │ ├── DomTest.fan │ ├── GeomTest.fan │ └── JavaTest.fan ├── domkit ├── build.fan ├── css │ ├── AccordianBox.css │ ├── Base.css │ ├── Box.css │ ├── Button.css │ ├── CardBox.css │ ├── Checkbox.css │ ├── Combo.css │ ├── Dialog.css │ ├── Dnd.css │ ├── FlexBox.css │ ├── FlipBox.css │ ├── FlowBox.css │ ├── GridBox.css │ ├── Label.css │ ├── ListButton.css │ ├── Menu.css │ ├── Popup.css │ ├── ProgressBar.css │ ├── RadioButton.css │ ├── SashBox.css │ ├── ScrollBox.css │ ├── Sheet.css │ ├── Table.css │ ├── TextArea.css │ ├── TextField.css │ ├── Tree.css │ └── WellBox.css ├── fan │ ├── AccordionBox.fan │ ├── Align.fan │ ├── Box.fan │ ├── Button.fan │ ├── ButtonGroup.fan │ ├── CardBox.fan │ ├── Checkbox.fan │ ├── Combo.fan │ ├── Dialog.fan │ ├── Dir.fan │ ├── Dnd.fan │ ├── DomListener.fan │ ├── FilePicker.fan │ ├── FlexBox.fan │ ├── FlipBox.fan │ ├── FlowBox.fan │ ├── GridBox.fan │ ├── Label.fan │ ├── Link.fan │ ├── ListButton.fan │ ├── Menu.fan │ ├── Popup.fan │ ├── ProgressBar.fan │ ├── RadioButton.fan │ ├── SashBox.fan │ ├── ScrollBox.fan │ ├── Selection.fan │ ├── Sheet.fan │ ├── Table.fan │ ├── TextArea.fan │ ├── TextField.fan │ ├── ToggleButton.fan │ ├── Tooltip.fan │ ├── Tree.fan │ └── WellBox.fan └── pod.fandoc ├── email ├── build.fan ├── fan │ ├── Email.fan │ ├── EmailPart.fan │ ├── FilePart.fan │ ├── MimeUtil.fan │ ├── MultiPart.fan │ ├── SmtpClient.fan │ ├── SmtpErr.fan │ └── TextPart.fan ├── pod.fandoc └── test │ ├── EmailTest.fan │ └── MimeUtilTest.fan ├── fanc ├── build.fan └── fan │ ├── FancCmd.fan │ ├── Main.fan │ ├── java │ ├── JavaCmd.fan │ ├── JavaExprPrinter.fan │ ├── JavaMethodPrinter.fan │ ├── JavaNativeGen.fan │ ├── JavaPrinter.fan │ ├── JavaStmtPrinter.fan │ ├── JavaTypePrinter.fan │ └── JavaUtil.fan │ └── util │ ├── CodePrinter.fan │ ├── ExprPrinter.fan │ ├── MiscCmds.fan │ ├── StmtPrinter.fan │ └── TranspileCmd.fan ├── fandoc ├── build.fan ├── fan │ ├── DocModel.fan │ ├── DocWriter.fan │ ├── FandocDocWriter.fan │ ├── FandocErr.fan │ ├── FandocParser.fan │ ├── HtmlDocWriter.fan │ ├── InlineParser.fan │ └── MarkdownDocWriter.fan ├── pod.fandoc └── test │ ├── FandocTest.fan │ ├── MarkdownTest.fan │ └── PathTest.fan ├── fanr ├── build.fan ├── fan │ ├── FanrEnv.fan │ ├── PodSpec.fan │ ├── Repo.fan │ ├── file │ │ ├── FileRepo.fan │ │ └── FileRepoDb.fan │ ├── query │ │ ├── Parser.fan │ │ ├── Query.fan │ │ └── Tokenizer.fan │ ├── tool │ │ ├── Command.fan │ │ ├── ConfigCmd.fan │ │ ├── EnvCmd.fan │ │ ├── HelpCmd.fan │ │ ├── InstallCmd.fan │ │ ├── Main.fan │ │ ├── PingCmd.fan │ │ ├── PublishCmd.fan │ │ ├── QueryCmd.fan │ │ └── UninstallCmd.fan │ └── web │ │ ├── WebRepo.fan │ │ ├── WebRepoAuth.fan │ │ ├── WebRepoMain.fan │ │ └── WebRepoMod.fan └── test │ ├── QueryTest.fan │ └── WebRepoTest.fan ├── fansc ├── FanSc │ ├── App.config │ ├── FanSc.cs │ ├── FanService.cs │ ├── FanServiceInstaller.cs │ └── Win32Services.cs └── build.fan ├── fansh ├── build.fan └── fan │ ├── Evaluator.fan │ └── Shell.fan ├── graphics ├── build.fan ├── fan │ ├── Color.fan │ ├── DeviceContext.fan │ ├── Font.fan │ ├── FontData.fan │ ├── Geom.fan │ ├── Graphics.fan │ ├── GraphicsEnv.fan │ ├── GraphicsPath.fan │ ├── Image.fan │ ├── Paint.fan │ ├── Stroke.fan │ └── Transform.fan ├── fontmetrics.html └── test │ ├── ColorTest.fan │ ├── FontTest.fan │ ├── GeomTest.fan │ ├── StrokeTest.fan │ └── TransformTest.fan ├── graphicsJava ├── build.fan └── fan │ ├── java2D │ ├── Java2DFontMetrics.fan │ ├── Java2DGraphics.fan │ ├── Java2DGraphicsEnv.fan │ ├── Java2DGraphicsPath.fan │ └── Java2DImage.fan │ └── server │ ├── JpegDecoder.fan │ ├── PngDecoder.fan │ ├── ServerGraphicsEnv.fan │ ├── ServerImage.fan │ └── SvgDecoder.fan ├── inet ├── build.fan ├── dotnet │ ├── IpAddrPeer.cs │ ├── TcpListenerPeer.cs │ ├── TcpSocketPeer.cs │ └── UdpSocketPeer.cs ├── fan │ ├── IpAddr.fan │ ├── IpInterface.fan │ ├── MulticastSocket.fan │ ├── SocketConfig.fan │ ├── SocketOptions.fan │ ├── TcpListener.fan │ ├── TcpSocket.fan │ ├── UdpPacket.fan │ ├── UdpSocket.fan │ └── UnknownHostErr.fan ├── java │ ├── IpAddrPeer.java │ ├── IpInterfacePeer.java │ ├── MulticastSocketPeer.java │ ├── SocketConfigPeer.java │ ├── TcpListenerPeer.java │ ├── TcpSocketPeer.java │ └── UdpSocketPeer.java └── test │ ├── IpAddrTest.fan │ ├── IpInterfaceTest.fan │ ├── MulticastSocketTest.fan │ ├── TcpListenerTest.fan │ ├── TcpSocketTest.fan │ └── UdpSocketTest.fan ├── markdown ├── build.fan ├── fan │ ├── MarkdownExt.fan │ ├── ast │ │ ├── Block.fan │ │ ├── DefinitionMap.fan │ │ ├── Link.fan │ │ ├── Node.fan │ │ └── Visitor.fan │ ├── ext │ │ ├── gfm-tables │ │ │ └── TablesExt.fan │ │ ├── image-attributes │ │ │ └── ImgAttrsExt.fan │ │ └── xetodoc │ │ │ └── Xetodoc.fan │ ├── parser │ │ ├── BlockParser.fan │ │ ├── DocumentParser.fan │ │ ├── LinkReferenceDefinitionParser.fan │ │ ├── Parser.fan │ │ ├── PostProcessor.fan │ │ ├── Scanner.fan │ │ ├── SourceLine.fan │ │ ├── SourceSpan.fan │ │ ├── block │ │ │ ├── BlockQuoteParser.fan │ │ │ ├── DocumentBlockParser.fan │ │ │ ├── FencedCodeParser.fan │ │ │ ├── HeadingParser.fan │ │ │ ├── HtmlBlockParser.fan │ │ │ ├── IndentedCodeParser.fan │ │ │ ├── ListBlockParser.fan │ │ │ ├── ParagraphParser.fan │ │ │ └── ThematicBreakParser.fan │ │ └── inline │ │ │ ├── AutolinkInlineParser.fan │ │ │ ├── BackslashInlineParser.fan │ │ │ ├── BackticksInlineParser.fan │ │ │ ├── DefaultInlineParser.fan │ │ │ ├── Delimiter.fan │ │ │ ├── DelimiterProcessor.fan │ │ │ ├── EntityInlineParser.fan │ │ │ ├── HtmlInlineParser.fan │ │ │ ├── InlineParser.fan │ │ │ ├── LinkInfo.fan │ │ │ └── LinkProcessor.fan │ ├── render │ │ ├── Renderer.fan │ │ ├── html │ │ │ ├── CoreHtmlNodeRenderer.fan │ │ │ ├── HtmlContext.fan │ │ │ ├── HtmlRenderer.fan │ │ │ ├── HtmlWriter.fan │ │ │ └── UrlSanitizer.fan │ │ ├── markdown │ │ │ ├── CoreMarkdownNodeRenderer.fan │ │ │ ├── MarkdownContext.fan │ │ │ ├── MarkdownRenderer.fan │ │ │ └── MarkdownWriter.fan │ │ └── text │ │ │ ├── CoreTextNodeRenderer.fan │ │ │ ├── TextContext.fan │ │ │ ├── TextRenderer.fan │ │ │ └── TextWriter.fan │ └── util │ │ ├── Chars.fan │ │ ├── Esc.fan │ │ ├── Html5.fan │ │ └── LineReader.fan ├── pod.fandoc ├── res │ └── entities.txt └── test │ ├── CharsTest.fan │ ├── CommonMarkSpecTest.fan │ ├── CommonMarkTest.fan │ ├── DelimitedTest.fan │ ├── DelimiterProcessorTest.fan │ ├── EscTest.fan │ ├── FencedCodeParserTest.fan │ ├── HeadingParserTest.fan │ ├── HtmlInlineParserTest.fan │ ├── HtmlRendererTest.fan │ ├── LineReaderTest.fan │ ├── LinkReferenceDefinitionNodeTest.fan │ ├── LinkReferenceDefinitionParserTest.fan │ ├── ListBlockParserTest.fan │ ├── ListTestLooseTest.fan │ ├── NodeTest.fan │ ├── ParserTest.fan │ ├── PathologicalTest.fan │ ├── ScannerTest.fan │ ├── SourceLineTest.fan │ ├── SourceSpanTest.fan │ ├── SourceSpansTest.fan │ ├── SpecialInputTest.fan │ ├── TextRendererTest.fan │ ├── TextWriterTest.fan │ ├── ThematicBreakParserTest.fan │ ├── ext │ ├── ImgAttrsExtTest.fan │ ├── TableMarkdownRendererTest.fan │ ├── TableTextTest.fan │ ├── TablesExtTest.fan │ └── XetodocExtTest.fan │ └── markdown │ ├── MarkdownRendererTest.fan │ └── MarkdownSpecTest.fan ├── math ├── build.fan ├── fan │ ├── BigInt.fan │ ├── Math.fan │ └── Matrix.fan ├── java │ ├── BigInt.java │ └── MMatrix.java ├── pod.fandoc └── test │ ├── BigIntTest.fan │ └── MMatrixTest.fan ├── nodeJs ├── build.fan ├── fan │ ├── EmitUtil.fan │ ├── Main.fan │ ├── NodeJsCmd.fan │ ├── cmd │ │ ├── ExtractCmd.fan │ │ ├── HelpCmd.fan │ │ ├── InitCmd.fan │ │ ├── RunCmd.fan │ │ └── TestCmd.fan │ ├── fanc │ │ └── JsCmd.fan │ └── ts │ │ ├── GenTsDecl.fan │ │ └── TsDocWriter.fan └── res │ ├── fantomTemplate.js │ ├── scriptRunnerTemplate.js │ └── testRunnerTemplate.js ├── sql ├── build.fan ├── fan │ ├── Col.fan │ ├── DeprecatedTokenizer.fan │ ├── Row.fan │ ├── SqlConn.fan │ ├── SqlConnImpl.fan │ ├── SqlConnPool.fan │ ├── SqlErr.fan │ ├── SqlMeta.fan │ ├── Statement.fan │ └── Tokenizer.fan ├── java │ ├── Cols.java │ ├── RowPeer.java │ ├── SqlConnImplPeer.java │ ├── SqlConnPoolPeer.java │ ├── SqlMetaPeer.java │ ├── SqlUtil.java │ └── StatementPeer.java ├── pod.fandoc └── test │ ├── DeprecatedTokenizerTest.fan │ ├── SqlConnPoolTest.fan │ ├── SqlTest.fan │ └── TokenizerTest.fan ├── syntax ├── build.fan ├── fan │ ├── SyntaxHtmlWriter.fan │ ├── SyntaxModel.fan │ ├── SyntaxParser.fan │ └── SyntaxRules.fan └── test │ └── SyntaxTest.fan ├── sys ├── build.fan ├── dotnet │ ├── build.fan │ ├── fan │ │ └── sys │ │ │ ├── ArgErr.cs │ │ │ ├── BigDecimal.cs │ │ │ ├── Boolean.cs │ │ │ ├── BootEnv.cs │ │ │ ├── Buf.cs │ │ │ ├── CancelledErr.cs │ │ │ ├── CastErr.cs │ │ │ ├── Charset.cs │ │ │ ├── ClassType.cs │ │ │ ├── ConstErr.cs │ │ │ ├── Date.cs │ │ │ ├── DateTime.cs │ │ │ ├── DateTimeStr.cs │ │ │ ├── Depend.cs │ │ │ ├── Deprecated.cs │ │ │ ├── Double.cs │ │ │ ├── Duration.cs │ │ │ ├── Endian.cs │ │ │ ├── Enum.cs │ │ │ ├── Env.cs │ │ │ ├── Err.cs │ │ │ ├── Facet.cs │ │ │ ├── FacetMeta.cs │ │ │ ├── Facets.cs │ │ │ ├── FanBool.cs │ │ │ ├── FanDecimal.cs │ │ │ ├── FanFloat.cs │ │ │ ├── FanInt.cs │ │ │ ├── FanNum.cs │ │ │ ├── FanObj.cs │ │ │ ├── FanScheme.cs │ │ │ ├── FanStr.cs │ │ │ ├── Field.cs │ │ │ ├── FieldNotSetErr.cs │ │ │ ├── File.cs │ │ │ ├── FileBuf.cs │ │ │ ├── FileScheme.cs │ │ │ ├── Func.cs │ │ │ ├── FuncType.cs │ │ │ ├── GenericType.cs │ │ │ ├── IOErr.cs │ │ │ ├── InStream.cs │ │ │ ├── IndexErr.cs │ │ │ ├── InterruptedErr.cs │ │ │ ├── Js.cs │ │ │ ├── List.cs │ │ │ ├── ListType.cs │ │ │ ├── LocalFile.cs │ │ │ ├── Locale.cs │ │ │ ├── Log.cs │ │ │ ├── LogLevel.cs │ │ │ ├── LogRec.cs │ │ │ ├── Long.cs │ │ │ ├── Map.cs │ │ │ ├── MapType.cs │ │ │ ├── MemBuf.cs │ │ │ ├── Method.cs │ │ │ ├── MimeType.cs │ │ │ ├── MmapBuf.cs │ │ │ ├── Month.cs │ │ │ ├── NameErr.cs │ │ │ ├── NoDoc.cs │ │ │ ├── NotImmutableErr.cs │ │ │ ├── NullErr.cs │ │ │ ├── NullableType.cs │ │ │ ├── Number.cs │ │ │ ├── Operator.cs │ │ │ ├── OutStream.cs │ │ │ ├── Param.cs │ │ │ ├── ParseErr.cs │ │ │ ├── Pod.cs │ │ │ ├── Process.cs │ │ │ ├── Range.cs │ │ │ ├── ReadonlyErr.cs │ │ │ ├── Regex.cs │ │ │ ├── RegexMatcher.cs │ │ │ ├── Serializable.cs │ │ │ ├── Service.cs │ │ │ ├── Service_.cs │ │ │ ├── Slot.cs │ │ │ ├── StrBuf.cs │ │ │ ├── StrBufOutStream.cs │ │ │ ├── StrInStream.cs │ │ │ ├── Sys.cs │ │ │ ├── SysInStream.cs │ │ │ ├── SysOutStream.cs │ │ │ ├── SysProps.cs │ │ │ ├── Test.cs │ │ │ ├── TestErr.cs │ │ │ ├── This.cs │ │ │ ├── Time.cs │ │ │ ├── TimeZone.cs │ │ │ ├── TimeoutErr.cs │ │ │ ├── Transient.cs │ │ │ ├── Type.cs │ │ │ ├── Unit.cs │ │ │ ├── UnknownFacetErr.cs │ │ │ ├── UnknownKeyErr.cs │ │ │ ├── UnknownPodErr.cs │ │ │ ├── UnknownServiceErr.cs │ │ │ ├── UnknownSlotErr.cs │ │ │ ├── UnknownTypeErr.cs │ │ │ ├── UnresolvedErr.cs │ │ │ ├── Unsafe.cs │ │ │ ├── UnsupportedErr.cs │ │ │ ├── Uri.cs │ │ │ ├── UriScheme.cs │ │ │ ├── Uuid.cs │ │ │ ├── Version.cs │ │ │ ├── Void.cs │ │ │ ├── Weekday.cs │ │ │ ├── Zip.cs │ │ │ └── ZipEntryFile.cs │ ├── fanx │ │ ├── emit │ │ │ ├── Emitter.cs │ │ │ ├── FClassEmit.cs │ │ │ ├── FCodeEmit.cs │ │ │ ├── FErrEmit.cs │ │ │ ├── FErrValEmit.cs │ │ │ ├── FMethodEmit.cs │ │ │ ├── FMixinBodyEmit.cs │ │ │ ├── FMixinInterfaceEmit.cs │ │ │ ├── FPodEmit.cs │ │ │ └── FTypeEmit.cs │ │ ├── fcode │ │ │ ├── FAttrs.cs │ │ │ ├── FBuf.cs │ │ │ ├── FCodePrinter.cs │ │ │ ├── FConst.cs │ │ │ ├── FDoc.cs │ │ │ ├── FField.cs │ │ │ ├── FLiterals.cs │ │ │ ├── FMethod.cs │ │ │ ├── FMethodVar.cs │ │ │ ├── FPod.cs │ │ │ ├── FPrinter.cs │ │ │ ├── FSlot.cs │ │ │ ├── FStore.cs │ │ │ ├── FTable.cs │ │ │ ├── FTuple.cs │ │ │ ├── FType.cs │ │ │ └── FTypeRef.cs │ │ ├── serial │ │ │ ├── Literal.cs │ │ │ ├── ObjDecoder.cs │ │ │ ├── ObjEncoder.cs │ │ │ ├── Token.cs │ │ │ └── Tokenizer.cs │ │ ├── test │ │ │ ├── Test.cs │ │ │ └── UtilTest.cs │ │ ├── tools │ │ │ ├── Fan.cs │ │ │ ├── Fanp.cs │ │ │ ├── Fant.cs │ │ │ ├── Nstub.cs │ │ │ └── Tool.cs │ │ └── util │ │ │ ├── Box.cs │ │ │ ├── DataReader.cs │ │ │ ├── EnvIndex.cs │ │ │ ├── EnvProps.cs │ │ │ ├── EnvScripts.cs │ │ │ ├── FanUtil.cs │ │ │ ├── FileUtil.cs │ │ │ ├── OpUtil.cs │ │ │ ├── Properties.cs │ │ │ ├── StrUtil.cs │ │ │ └── TypeParser.cs │ └── perwapi │ │ └── PERWAPI.cs ├── es │ ├── build.fan │ ├── design.md │ ├── fan │ │ ├── Bool.js │ │ ├── BootEnv.js │ │ ├── Buf.js │ │ ├── Charset.js │ │ ├── ConstBuf.js │ │ ├── Crypto.js │ │ ├── Date.js │ │ ├── DateTime.js │ │ ├── DateTimeStr.js │ │ ├── Decimal.js │ │ ├── Depend.js │ │ ├── Duration.js │ │ ├── Endian.js │ │ ├── Enum.js │ │ ├── Env.js │ │ ├── Err.js │ │ ├── FConst.js │ │ ├── Facet.js │ │ ├── Facets.js │ │ ├── Field.js │ │ ├── File.js │ │ ├── FileStore.js │ │ ├── Float.js │ │ ├── Func.js │ │ ├── InStream.js │ │ ├── Int.js │ │ ├── List.js │ │ ├── LocalFile.js │ │ ├── Locale.js │ │ ├── Log.js │ │ ├── LogLevel.js │ │ ├── LogRec.js │ │ ├── Map.js │ │ ├── Md5.js │ │ ├── MemBuf.js │ │ ├── MemBufStream.js │ │ ├── MemFile.js │ │ ├── Method.js │ │ ├── MethodFunc.js │ │ ├── MimeType.js │ │ ├── Month.js │ │ ├── Num.js │ │ ├── Obj.js │ │ ├── ObjUtil.js │ │ ├── OutStream.js │ │ ├── Param.js │ │ ├── Pod.js │ │ ├── Process.js │ │ ├── Range.js │ │ ├── Regex.js │ │ ├── RegexMatcher.js │ │ ├── Service.js │ │ ├── Sha1.js │ │ ├── Sha256.js │ │ ├── Slot.js │ │ ├── Str.js │ │ ├── StrBuf.js │ │ ├── StrBufOutStream.js │ │ ├── StrInStream.js │ │ ├── Sys.js │ │ ├── SysInStream.js │ │ ├── SysOutStream.js │ │ ├── Test.js │ │ ├── This.js │ │ ├── Time.js │ │ ├── TimeZone.js │ │ ├── Type.js │ │ ├── Unit.js │ │ ├── Unsafe.js │ │ ├── Uri.js │ │ ├── UriScheme.js │ │ ├── Uuid.js │ │ ├── Version.js │ │ ├── Void.js │ │ ├── Weekday.js │ │ ├── Zip.js │ │ ├── ZipEntryFile.js │ │ ├── ZipStream.js │ │ ├── ZipSupport.js │ │ └── staticInit.js │ ├── fanx │ │ ├── ObjDecoder.js │ │ ├── ObjEncoder.js │ │ ├── Token.js │ │ ├── Tokenizer.js │ │ └── TypeParser.js │ └── gen │ │ └── genErrs.fan ├── fan │ ├── ArgErr.fan │ ├── Bool.fan │ ├── Buf.fan │ ├── CancelledErr.fan │ ├── CastErr.fan │ ├── Charset.fan │ ├── ConstErr.fan │ ├── Date.fan │ ├── DateTime.fan │ ├── Decimal.fan │ ├── Depend.fan │ ├── Duration.fan │ ├── Endian.fan │ ├── Enum.fan │ ├── Env.fan │ ├── Err.fan │ ├── Facet.fan │ ├── Facets.fan │ ├── Field.fan │ ├── FieldNotSetErr.fan │ ├── File.fan │ ├── FileStore.fan │ ├── Float.fan │ ├── Func.fan │ ├── IOErr.fan │ ├── InStream.fan │ ├── IndexErr.fan │ ├── Int.fan │ ├── InterruptedErr.fan │ ├── List.fan │ ├── Locale.fan │ ├── Log.fan │ ├── LogLevel.fan │ ├── LogRec.fan │ ├── Map.fan │ ├── Method.fan │ ├── MimeType.fan │ ├── Month.fan │ ├── NameErr.fan │ ├── NotImmutableErr.fan │ ├── NullErr.fan │ ├── Num.fan │ ├── Obj.fan │ ├── OutStream.fan │ ├── Param.fan │ ├── ParseErr.fan │ ├── Pod.fan │ ├── Process.fan │ ├── Range.fan │ ├── ReadonlyErr.fan │ ├── Regex.fan │ ├── RegexMatcher.fan │ ├── Service.fan │ ├── Slot.fan │ ├── Str.fan │ ├── StrBuf.fan │ ├── Test.fan │ ├── This.fan │ ├── Time.fan │ ├── TimeZone.fan │ ├── TimeoutErr.fan │ ├── Type.fan │ ├── Unit.fan │ ├── UnknownFacetErr.fan │ ├── UnknownKeyErr.fan │ ├── UnknownPodErr.fan │ ├── UnknownServiceErr.fan │ ├── UnknownSlotErr.fan │ ├── UnknownTypeErr.fan │ ├── UnresolvedErr.fan │ ├── Unsafe.fan │ ├── UnsupportedErr.fan │ ├── Uri.fan │ ├── UriScheme.fan │ ├── Uuid.fan │ ├── Version.fan │ ├── Void.fan │ ├── Weekday.fan │ └── Zip.fan ├── java │ ├── build.fan │ ├── fan │ │ └── sys │ │ │ ├── ArgErr.java │ │ │ ├── BootEnv.java │ │ │ ├── Buf.java │ │ │ ├── CancelledErr.java │ │ │ ├── CastErr.java │ │ │ ├── Charset.java │ │ │ ├── ClassLoaderFile.java │ │ │ ├── ClassType.java │ │ │ ├── ConstBuf.java │ │ │ ├── ConstErr.java │ │ │ ├── Date.java │ │ │ ├── DateTime.java │ │ │ ├── DateTimeStr.java │ │ │ ├── Depend.java │ │ │ ├── Deprecated.java │ │ │ ├── Duration.java │ │ │ ├── Endian.java │ │ │ ├── Enum.java │ │ │ ├── Env.java │ │ │ ├── Err.java │ │ │ ├── Facet.java │ │ │ ├── FacetMeta.java │ │ │ ├── Facets.java │ │ │ ├── FanBool.java │ │ │ ├── FanClassLoader.java │ │ │ ├── FanDecimal.java │ │ │ ├── FanFloat.java │ │ │ ├── FanInt.java │ │ │ ├── FanNum.java │ │ │ ├── FanObj.java │ │ │ ├── FanScheme.java │ │ │ ├── FanStr.java │ │ │ ├── Field.java │ │ │ ├── FieldNotSetErr.java │ │ │ ├── File.java │ │ │ ├── FileBuf.java │ │ │ ├── FileScheme.java │ │ │ ├── FileStore.java │ │ │ ├── Func.java │ │ │ ├── FuncType.java │ │ │ ├── GenericType.java │ │ │ ├── IOErr.java │ │ │ ├── InStream.java │ │ │ ├── IndexErr.java │ │ │ ├── InterruptedErr.java │ │ │ ├── JarDistEnv.java │ │ │ ├── JavaType.java │ │ │ ├── Js.java │ │ │ ├── List.java │ │ │ ├── ListType.java │ │ │ ├── LocalFile.java │ │ │ ├── LocalFileStore.java │ │ │ ├── Locale.java │ │ │ ├── Log.java │ │ │ ├── LogLevel.java │ │ │ ├── LogRec.java │ │ │ ├── Map.java │ │ │ ├── MapType.java │ │ │ ├── MemBuf.java │ │ │ ├── Method.java │ │ │ ├── MimeType.java │ │ │ ├── Month.java │ │ │ ├── NameErr.java │ │ │ ├── NioBuf.java │ │ │ ├── NoDoc.java │ │ │ ├── NotImmutableErr.java │ │ │ ├── NullErr.java │ │ │ ├── NullableType.java │ │ │ ├── Operator.java │ │ │ ├── OutStream.java │ │ │ ├── Param.java │ │ │ ├── ParseErr.java │ │ │ ├── PathFile.java │ │ │ ├── Pod.java │ │ │ ├── Process.java │ │ │ ├── Range.java │ │ │ ├── ReadonlyErr.java │ │ │ ├── Regex.java │ │ │ ├── RegexMatcher.java │ │ │ ├── Serializable.java │ │ │ ├── Service$.java │ │ │ ├── Service.java │ │ │ ├── Slot.java │ │ │ ├── StrBuf.java │ │ │ ├── StrBufOutStream.java │ │ │ ├── StrInStream.java │ │ │ ├── Sys.java │ │ │ ├── SysInStream.java │ │ │ ├── SysOutStream.java │ │ │ ├── Test.java │ │ │ ├── TestErr.java │ │ │ ├── This.java │ │ │ ├── Time.java │ │ │ ├── TimeZone.java │ │ │ ├── TimeoutErr.java │ │ │ ├── Transient.java │ │ │ ├── Type.java │ │ │ ├── Unit.java │ │ │ ├── UnknownFacetErr.java │ │ │ ├── UnknownKeyErr.java │ │ │ ├── UnknownPodErr.java │ │ │ ├── UnknownServiceErr.java │ │ │ ├── UnknownSlotErr.java │ │ │ ├── UnknownTypeErr.java │ │ │ ├── UnresolvedErr.java │ │ │ ├── Unsafe.java │ │ │ ├── UnsupportedErr.java │ │ │ ├── Uri.java │ │ │ ├── UriScheme.java │ │ │ ├── Uuid.java │ │ │ ├── Version.java │ │ │ ├── Void.java │ │ │ ├── Weekday.java │ │ │ ├── Zip.java │ │ │ └── ZipEntryFile.java │ └── fanx │ │ ├── emit │ │ ├── AttrEmit.java │ │ ├── CodeEmit.java │ │ ├── EmitConst.java │ │ ├── Emitter.java │ │ ├── FClassEmit.java │ │ ├── FCodeEmit.java │ │ ├── FFacetEmit.java │ │ ├── FMethodEmit.java │ │ ├── FMixinBodyEmit.java │ │ ├── FMixinInterfaceEmit.java │ │ ├── FPodEmit.java │ │ ├── FTypeEmit.java │ │ ├── FieldEmit.java │ │ └── MethodEmit.java │ │ ├── fcode │ │ ├── FAttrs.java │ │ ├── FBuf.java │ │ ├── FCodePrinter.java │ │ ├── FConst.java │ │ ├── FDoc.java │ │ ├── FField.java │ │ ├── FFieldRef.java │ │ ├── FLiterals.java │ │ ├── FMethod.java │ │ ├── FMethodRef.java │ │ ├── FMethodVar.java │ │ ├── FPod.java │ │ ├── FPrinter.java │ │ ├── FSlot.java │ │ ├── FStore.java │ │ ├── FTable.java │ │ ├── FType.java │ │ └── FTypeRef.java │ │ ├── interop │ │ ├── BooleanArray.java │ │ ├── ByteArray.java │ │ ├── CharArray.java │ │ ├── DoubleArray.java │ │ ├── FloatArray.java │ │ ├── IntArray.java │ │ ├── Interop.java │ │ ├── LongArray.java │ │ └── ShortArray.java │ │ ├── serial │ │ ├── Literal.java │ │ ├── ObjDecoder.java │ │ ├── ObjEncoder.java │ │ ├── Token.java │ │ └── Tokenizer.java │ │ ├── test │ │ ├── InteropTest.java │ │ ├── TestAnnoA.java │ │ ├── TestAnnoB.java │ │ └── TestAnnoC.java │ │ ├── tools │ │ ├── Fan.java │ │ ├── Fant.java │ │ └── Jstub.java │ │ └── util │ │ ├── Box.java │ │ ├── EnvIndex.java │ │ ├── EnvProps.java │ │ ├── EnvScripts.java │ │ ├── FanUtil.java │ │ ├── FileUtil.java │ │ ├── OpUtil.java │ │ ├── StrUtil.java │ │ └── TypeParser.java ├── js │ ├── build.fan │ ├── fan │ │ ├── Bool.js │ │ ├── Buf.js │ │ ├── Charset.js │ │ ├── ConstBuf.js │ │ ├── Crypto.js │ │ ├── Date.js │ │ ├── DateTime.js │ │ ├── DateTimeStr.js │ │ ├── Decimal.js │ │ ├── Depend.js │ │ ├── Duration.js │ │ ├── Endian.js │ │ ├── Enum.js │ │ ├── Env.js │ │ ├── Err.js │ │ ├── FConst.js │ │ ├── Facet.js │ │ ├── Facets.js │ │ ├── Field.js │ │ ├── File.js │ │ ├── FileStore.js │ │ ├── Float.js │ │ ├── Func.js │ │ ├── InStream.js │ │ ├── Int.js │ │ ├── List.js │ │ ├── LocalFile.js │ │ ├── LocalFileStore.js │ │ ├── Locale.js │ │ ├── Log.js │ │ ├── LogLevel.js │ │ ├── LogRec.js │ │ ├── Map.js │ │ ├── Md5.js │ │ ├── MemBuf.js │ │ ├── MemBufStream.js │ │ ├── MemFile.js │ │ ├── Method.js │ │ ├── MethodFunc.js │ │ ├── MimeType.js │ │ ├── Month.js │ │ ├── Num.js │ │ ├── Obj.js │ │ ├── ObjUtil.js │ │ ├── OutStream.js │ │ ├── Param.js │ │ ├── Pod.js │ │ ├── Range.js │ │ ├── Regex.js │ │ ├── RegexMatcher.js │ │ ├── Service.js │ │ ├── Sha1.js │ │ ├── Sha256.js │ │ ├── Slot.js │ │ ├── Str.js │ │ ├── StrBuf.js │ │ ├── StrBufOutStream.js │ │ ├── StrInStream.js │ │ ├── Sys.js │ │ ├── SysInStream.js │ │ ├── SysOutStream.js │ │ ├── Test.js │ │ ├── This.js │ │ ├── Time.js │ │ ├── TimeZone.js │ │ ├── Type.js │ │ ├── Unit.js │ │ ├── Unsafe.js │ │ ├── Uri.js │ │ ├── Uuid.js │ │ ├── Version.js │ │ ├── Void.js │ │ ├── Weekday.js │ │ ├── Zip.js │ │ └── staticInit.js │ └── fanx │ │ ├── ObjDecoder.js │ │ ├── ObjEncoder.js │ │ ├── Token.js │ │ ├── Tokenizer.js │ │ └── TypeParser.js └── locale │ ├── ar.props │ ├── bg.props │ ├── bn.props │ ├── cs.props │ ├── da.props │ ├── de.props │ ├── en-AU.props │ ├── en-GB.props │ ├── en-IE.props │ ├── en-NZ.props │ ├── en-US.props │ ├── en.props │ ├── es.props │ ├── fa.props │ ├── fi.props │ ├── fr.props │ ├── gu.props │ ├── he.props │ ├── hi.props │ ├── hr.props │ ├── hu.props │ ├── id.props │ ├── it.props │ ├── ja.props │ ├── kk.props │ ├── km.props │ ├── kn.props │ ├── ko.props │ ├── ku.props │ ├── lo.props │ ├── lt.props │ ├── lv.props │ ├── mg.props │ ├── ml.props │ ├── mn.props │ ├── mr.props │ ├── ms.props │ ├── nb.props │ ├── ne.props │ ├── nl.props │ ├── nn.props │ ├── om.props │ ├── pa.props │ ├── pl.props │ ├── pt.props │ ├── ro.props │ ├── ru.props │ ├── sd.props │ ├── sk.props │ ├── sl.props │ ├── sr.props │ ├── sv.props │ ├── ta.props │ ├── te.props │ ├── tg.props │ ├── th.props │ ├── tl.props │ ├── tr.props │ ├── uk.props │ ├── ur.props │ ├── uz.props │ ├── vi.props │ └── zh.props ├── testCompiler ├── build.fan └── fan │ ├── CheckErrorsTest.fan │ ├── ClosureTest.fan │ ├── CompilerTest.fan │ ├── ConstantFoldingTest.fan │ ├── EnumTest.fan │ ├── EnvTest.fan │ ├── ExprTest.fan │ ├── FacetTest.fan │ ├── FieldTest.fan │ ├── InheritTest.fan │ ├── ItBlockTest.fan │ ├── MiscTest.fan │ ├── NamespaceTest.fan │ ├── ParserTest.fan │ ├── RegressionTest.fan │ ├── ScriptTest.fan │ ├── StmtTest.fan │ └── TokenizerTest.fan ├── testDomkit ├── build.fan ├── fan │ ├── AccordionBoxTest.fan │ ├── ButtonTest.fan │ ├── CardBoxTest.fan │ ├── CheckboxTest.fan │ ├── ColTreeTest.fan │ ├── DialogTest.fan │ ├── DndTest.fan │ ├── DomkitTest.fan │ ├── FilePickerTest.fan │ ├── FlipBoxTest.fan │ ├── FormTest.fan │ ├── GridBoxTest.fan │ ├── KeyTest.fan │ ├── LabelTest.fan │ ├── Main.fan │ ├── MenuTest.fan │ ├── PopupTest.fan │ ├── ProgressBarTest.fan │ ├── RadioButtonTest.fan │ ├── SashBoxTest.fan │ ├── TableTest.fan │ ├── TextFieldTest.fan │ ├── TreeTest.fan │ └── WellBoxTest.fan └── res │ ├── info-grey.svg │ └── info-white.svg ├── testGraphics ├── build.fan ├── fan │ ├── AbstractTest.fan │ ├── AlphaTest.fan │ ├── BasicsTest.fan │ ├── ClipTest.fan │ ├── ColorsTest.fan │ ├── FontMetricsTest.fan │ ├── FontStyleTest.fan │ ├── ImageTest.fan │ ├── Main.fan │ ├── MainDom.fan │ ├── MainJava.fan │ ├── PathTest.fan │ ├── StrokeTest.fan │ └── TransformTest.fan └── res │ ├── test.jpg │ ├── test.png │ └── test.svg ├── testJava ├── build.fan ├── fan │ ├── AnnotationsTest.fan │ ├── CheckErrorsTest.fan │ ├── DasmTest.fan │ ├── InteropTest.fan │ ├── JavaImplTest.fan │ ├── JavaTest.fan │ ├── MiscTest.fan │ ├── NamespaceTest.fan │ ├── ReflectTest.fan │ └── SubclassTest.fan └── java │ ├── CharsetTest.java │ ├── DateTimeTest.java │ ├── EmitTest.java │ ├── FileUtilTest.java │ ├── JavaImplTestPeer.java │ ├── StrBufTest.java │ ├── StrUtilTest.java │ ├── Test.java │ └── TokenizerTest.java ├── testNative ├── build.fan ├── dotnet │ ├── NativePeer.cs │ └── NativeSubPeer.cs ├── fan │ ├── NativeClass.fan │ └── NativeTest.fan ├── java │ ├── Foo.java │ ├── NativeClass.java │ ├── NativePeer.java │ └── NativeSubPeer.java └── res │ └── foo.txt ├── testSys ├── build.fan ├── concurrent │ └── locale │ │ └── fr.props ├── fan │ ├── BoolTest.fan │ ├── BufCryptoTest.fan │ ├── BufTest.fan │ ├── CallTest.fan │ ├── CharsetTest.fan │ ├── ClosureTest.fan │ ├── CompilerJsTest.fan │ ├── CtorTest.fan │ ├── DateTimeTest.fan │ ├── DecimalTest.fan │ ├── DependTest.fan │ ├── DurationTest.fan │ ├── EnumTest.fan │ ├── EnvTest.fan │ ├── ErrTest.fan │ ├── ExprTest.fan │ ├── Facets.fan │ ├── FacetsTest.fan │ ├── FieldTest.fan │ ├── FileTest.fan │ ├── FloatTest.fan │ ├── FuncTest.fan │ ├── IntTest.fan │ ├── ListTest.fan │ ├── LocaleTest.fan │ ├── LogTest.fan │ ├── MapTest.fan │ ├── MethodTest.fan │ ├── MimeTypeTest.fan │ ├── MixinTest.fan │ ├── NamingTest.fan │ ├── ObjTest.fan │ ├── ParamTest.fan │ ├── ParserTotureTest.fan │ ├── PodTest.fan │ ├── ProcessTest.fan │ ├── RangeTest.fan │ ├── ReflectionTest.fan │ ├── RegexTest.fan │ ├── SerializationTest.fan │ ├── ServiceTest.fan │ ├── SlotTest.fan │ ├── StmtTest.fan │ ├── StrBufTest.fan │ ├── StrTest.fan │ ├── StreamTest.fan │ ├── SwitchTest.fan │ ├── TryTest.fan │ ├── TypeTest.fan │ ├── UnitTest.fan │ ├── UriTest.fan │ ├── UuidTest.fan │ ├── VersionTest.fan │ └── ZipTest.fan ├── locale │ ├── en-US.props │ ├── en.props │ ├── es-MX.props │ └── es.props └── res │ ├── podtest.props │ └── test.txt ├── util ├── build.fan ├── es │ ├── BoolArray.js │ ├── FloatArray.js │ ├── IntArray.js │ ├── NativeConsole.js │ ├── SecureRandomPeer.js │ └── SeededRandomPeer.js ├── fan │ ├── AbstractMain.fan │ ├── BoolArray.fan │ ├── Console.fan │ ├── CsvInStream.fan │ ├── CsvOutStream.fan │ ├── FileLoc.fan │ ├── FileLogger.fan │ ├── FloatArray.fan │ ├── IntArray.fan │ ├── JsonInStream.fan │ ├── JsonOutStream.fan │ ├── LockFile.fan │ ├── Macro.fan │ ├── PathEnv.fan │ ├── Random.fan │ ├── SyntheticFile.fan │ └── TestRunner.fan ├── java │ ├── BoolArray.java │ ├── FloatArray.java │ ├── IntArray.java │ ├── LockFile.java │ ├── NativeConsole.java │ ├── SecureRandomPeer.java │ └── SeededRandomPeer.java ├── js │ ├── BoolArray.js │ ├── FloatArray.js │ ├── IntArray.js │ ├── NativeConsole.js │ ├── SecureRandomPeer.js │ └── SeededRandomPeer.js ├── pod.fandoc └── test │ ├── BoolArrayTest.fan │ ├── ConsoleTest.fan │ ├── CsvTest.fan │ ├── FileLocTest.fan │ ├── FloatArrayTest.fan │ ├── IntArrayTest.fan │ ├── JsonTest.fan │ ├── MacroTest.fan │ └── RandomTest.fan ├── web ├── build.fan ├── fan │ ├── Cookie.fan │ ├── FilePack.fan │ ├── FileWeblet.fan │ ├── WebClient.fan │ ├── WebJsMode.fan │ ├── WebMod.fan │ ├── WebOutStream.fan │ ├── WebReq.fan │ ├── WebRes.fan │ ├── WebSession.fan │ ├── WebSocket.fan │ ├── WebUtil.fan │ └── Weblet.fan ├── pod.fandoc └── test │ ├── CookieTest.fan │ ├── FilePackTest.fan │ ├── UtilTest.fan │ ├── WebClientTest.fan │ └── WebOutStreamTest.fan ├── webmod ├── build.fan ├── fan │ ├── FileMod.fan │ ├── LogMod.fan │ ├── PipelineMod.fan │ └── RouteMod.fan └── pod.fandoc ├── wisp ├── build.fan ├── fan │ ├── Main.fan │ ├── MemWispSessionStore.fan │ ├── WispActor.fan │ ├── WispReq.fan │ ├── WispRes.fan │ ├── WispService.fan │ ├── WispSession.fan │ └── WispSessionStore.fan ├── pod.fandoc └── test │ ├── ReqTest.fan │ └── WispTest.fan ├── xml ├── build.fan ├── fan │ ├── XAttr.fan │ ├── XDoc.fan │ ├── XDocType.fan │ ├── XElem.fan │ ├── XErr.fan │ ├── XIncompleteErr.fan │ ├── XNode.fan │ ├── XNs.fan │ ├── XParser.fan │ ├── XPi.fan │ └── XText.fan ├── pod.fandoc └── test │ ├── DomTest.fan │ ├── ParserErrTest.fan │ ├── ParserTest.fan │ ├── PullTest.fan │ ├── WriteTest.fan │ └── XmlTest.fan └── yaml ├── build.fan ├── fan ├── YamlObj.fan ├── YamlParser.fan ├── YamlReader.fan ├── YamlSchema.fan └── YamlTokenizer.fan ├── pod.fandoc └── test ├── BasicYamlTest.fan ├── PrepTest.fan ├── YamlTestSuite.fan └── YamlTokenTest.fan /.dockerignore: -------------------------------------------------------------------------------- 1 | dockerfile -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # ignore files for fan 2 | 3 | Thumbs.db 4 | .DS_Store 5 | *.log 6 | 7 | # IntelliJ 8 | *.iml 9 | 10 | # Visual Studio 11 | .vs/ 12 | bin/Debug/ 13 | bin/Release/ 14 | obj/Debug/ 15 | obj/Release/ 16 | 17 | # IntelliJ 18 | .idea/ 19 | 20 | # general 21 | /readme.html 22 | /adm/pngcrush 23 | 24 | # domkit 25 | /src/domkit/res/css/ 26 | 27 | # etc 28 | /etc/markdown/tests/ 29 | /etc/sys/types.db 30 | /etc/yaml/tests/ 31 | 32 | # gen 33 | /gen/ 34 | 35 | # lib/ 36 | /lib/java/**/*.jar 37 | /lib/javascript/ 38 | /lib/dotnet/*.pdb 39 | /lib/dotnet/sys.dll 40 | /lib/fan/*.pod 41 | /lib/js/ 42 | /lib/es/ 43 | /lib/data/ 44 | /lib/tmp/ 45 | /lib/src/ 46 | 47 | # doc/ 48 | /doc/ 49 | 50 | # src/ 51 | /src/foo/ 52 | /src/sys/java/temp/ 53 | /src/testEs/ 54 | 55 | # temp 56 | /tmp/ 57 | /temp/ 58 | temp-java/ 59 | temp-es/ 60 | 61 | -------------------------------------------------------------------------------- /adm/filereplace.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | 3 | class FileReplace 4 | { 5 | 6 | Void replace(File f, Str from, Str to) 7 | { 8 | s := f.readAllStr(true) 9 | if (!s.contains(from)) return 10 | echo(" Replace $f") 11 | s = s.replace(from, to) 12 | f.out.print(s).close 13 | } 14 | 15 | Void main(Str[] args) 16 | { 17 | if (args.size < 4) 18 | { 19 | echo("usage: filereplace ") 20 | return 21 | } 22 | from := args[0] 23 | to := args[1] 24 | dir := File.os(args[2]) 25 | ext := args[3] 26 | dir.walk |File f| { if (f.ext == ext) replace(f, from, to) } 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /adm/tools/atom/install.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2016, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 16 Feb 16 Matthew Giannini Creation 8 | // 9 | 10 | ** 11 | ** Install the language-fantom plugin for the Atom editor. 12 | ** Requires 'apm' to be in the PATH. 13 | ** 14 | class Install 15 | { 16 | 17 | static Void main() 18 | { 19 | args := Env.cur.args 20 | if (args.size != 0) 21 | { 22 | echo(" usage: install") 23 | } 24 | c := Process(["apm", "install", "language-fantom"]) 25 | c.run() 26 | c.join 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /adm/unixsetup: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | # 4 | # unixsetup: chmod +x on all fan scripts 5 | # 6 | # TODO: need to add examples/ scripts 7 | # 8 | 9 | . "${0%/*}/../bin/fanlaunch" 10 | echo "###" 11 | echo "### FAN_HOME=$FAN_HOME" 12 | echo "###" 13 | 14 | # this is a test comment for email notification, but do i really need .exe? 15 | chmod +x $FAN_HOME/bin/* 16 | find $FAN_HOME \ 17 | \( -name "*.exe" -o -name "build*.fan" -o -name 'boot*.fan' \) \ 18 | -exec chmod +x {} \; 19 | find $FAN_HOME/examples -name '*.fan' \ 20 | -exec chmod +x {} \; 21 | -------------------------------------------------------------------------------- /bin/fan: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # fan: launcher for Fan programs 5 | # 6 | 7 | . "${0%/*}/fanlaunch" 8 | fanlaunch Fan "$@" 9 | -------------------------------------------------------------------------------- /bin/fan.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM 3 | REM Copyright (c) 2015, Brian Frank and Andy Frank 4 | REM Licensed under the Academic Free License version 3.0 5 | REM 6 | REM History: 7 | REM 27 Jul 2015 Matthew Giannini Creation 8 | REM 9 | REM fan: launcher for Fantom programs 10 | REM 11 | 12 | call "%~fs0\..\fanlaunch.bat" Fan %* 13 | EXIT /B %errorlevel% 14 | -------------------------------------------------------------------------------- /bin/fanc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # fanc: Fan Compiler tools 5 | # 6 | 7 | . "${0%/*}/fanlaunch" 8 | fanlaunch Fan fanc "$@" 9 | 10 | -------------------------------------------------------------------------------- /bin/fanc.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM 3 | REM Copyright (c) 2025, Brian Frank and Andy Frank 4 | REM Licensed under the Academic Free License version 3.0 5 | REM 6 | REM History: 7 | REM 12 May 2025 Brian Frank Creation 8 | REM 9 | REM fanr: Fantom compiler tools 10 | REM 11 | 12 | call "%~fs0\..\fanlaunch.bat" Fan fanc %* 13 | 14 | -------------------------------------------------------------------------------- /bin/fanp: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # fanp: fcode disassembler 5 | # 6 | 7 | . "${0%/*}/fanlaunch" 8 | fanlaunch Fan "compiler::Fanp" "$@" -------------------------------------------------------------------------------- /bin/fanp.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM 3 | REM Copyright (c) 2015, Brian Frank and Andy Frank 4 | REM Licensed under the Academic Free License version 3.0 5 | REM 6 | REM History: 7 | REM 27 Jul 2015 Matthew Giannini Creation 8 | REM 9 | REM fanp: fcode disassembler 10 | REM 11 | 12 | call "%~fs0\..\fanlaunch.bat" Fan "compiler::Fanp" %* 13 | -------------------------------------------------------------------------------- /bin/fanr: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # fanr: Fan Repository Manager 5 | # 6 | 7 | . "${0%/*}/fanlaunch" 8 | fanlaunch Fan fanr "$@" -------------------------------------------------------------------------------- /bin/fanr.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM 3 | REM Copyright (c) 2015, Brian Frank and Andy Frank 4 | REM Licensed under the Academic Free License version 3.0 5 | REM 6 | REM History: 7 | REM 27 Jul 2015 Matthew Giannini Creation 8 | REM 9 | REM fanr: Fantom repository manager 10 | REM 11 | 12 | call "%~fs0\..\fanlaunch.bat" Fan fanr %* 13 | -------------------------------------------------------------------------------- /bin/fansc.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/bin/fansc.exe -------------------------------------------------------------------------------- /bin/fansh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # fansh: interactive shell 5 | # 6 | 7 | . "${0%/*}/fanlaunch" 8 | fanlaunch Fan fansh "$@" 9 | -------------------------------------------------------------------------------- /bin/fansh.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM 3 | REM Copyright (c) 2015, Brian Frank and Andy Frank 4 | REM Licensed under the Academic Free License version 3.0 5 | REM 6 | REM History: 7 | REM 27 Jul 2015 Matthew Giannini Creation 8 | REM 9 | REM fansh: interactive shell 10 | REM 11 | 12 | call "%~fs0\..\fanlaunch.bat" Fan fansh %* 13 | -------------------------------------------------------------------------------- /bin/fansubstitute: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # fan: launcher for Fan using an alternate installation 5 | # this script is used during bootstrap build 6 | # 7 | 8 | if [ -z "$FAN_SUBSTITUTE" -o ! -d "$FAN_SUBSTITUTE" ] ; then 9 | echo ERROR: must export the FAN_SUBSTITUTE env variable 10 | exit 1 11 | fi 12 | 13 | export FAN_HOME=$FAN_SUBSTITUTE 14 | 15 | . "${0%/*}/fanlaunch" 16 | fanlaunch Fan "$@" 17 | -------------------------------------------------------------------------------- /bin/fant: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # fant: unit tester 5 | # 6 | 7 | # To run original Java version: 8 | # fanlaunch Fant "$@" 9 | 10 | . "${0%/*}/fanlaunch" 11 | fanlaunch Fan "util::TestRunner" "$@" 12 | 13 | -------------------------------------------------------------------------------- /bin/fant.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM 3 | REM Copyright (c) 2015, Brian Frank and Andy Frank 4 | REM Licensed under the Academic Free License version 3.0 5 | REM 6 | REM History: 7 | REM 27 Jul 2015 Matthew Giannini Creation 8 | REM 9 | REM fant: unit tester 10 | REM 11 | 12 | call "%~fs0\..\fanlaunch.bat" Fan "util::TestRunner" %* 13 | 14 | -------------------------------------------------------------------------------- /bin/flux: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # flux: Fan Developer UI 5 | # 6 | 7 | . "${0%/*}/fanlaunch" 8 | fanlaunch Fan flux "$@" 9 | -------------------------------------------------------------------------------- /bin/flux.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM 3 | REM Copyright (c) 2015, Brian Frank and Andy Frank 4 | REM Licensed under the Academic Free License version 3.0 5 | REM 6 | REM History: 7 | REM 27 Jul 2015 Matthew Giannini Creation 8 | REM 9 | REM flux: Fantom Developer UI 10 | REM 11 | 12 | call "%~fs0\..\fanlaunch.bat" Fan flux %* 13 | -------------------------------------------------------------------------------- /bin/jstub: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # jstub: launcher for JStub program 5 | # 6 | 7 | . "${0%/*}/fanlaunch" 8 | fanlaunch Jstub "$@" -------------------------------------------------------------------------------- /bin/jstub.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM 3 | REM Copyright (c) 2015, Brian Frank and Andy Frank 4 | REM Licensed under the Academic Free License version 3.0 5 | REM 6 | REM History: 7 | REM 27 Jul 2015 Matthew Giannini Creation 8 | REM 9 | REM jstub: launcher for JStub program 10 | REM 11 | 12 | call "%~fs0\..\fanlaunch.bat" Jstub %* 13 | -------------------------------------------------------------------------------- /bin/nstub.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/bin/nstub.exe -------------------------------------------------------------------------------- /etc/build/config.props: -------------------------------------------------------------------------------- 1 | // 2 | // Config: build 3 | // 4 | // History: 5 | // 22 Jul 09 Brian Frank Creation 6 | // 7 | 8 | // 9 | // Note all these config options can also be overriden via env variable: 10 | // set FAN_BUILD_JDKHOME=/C:/Program Files/Java/jdk1.7/ 11 | // 12 | 13 | // default version used by build scripts 14 | buildVersion=1.0.81 15 | 16 | // Must be configured boot build in substitute/release installation 17 | //devHome=/work/fan/ 18 | 19 | // JVM version compiler target, by default Fantom uses JDK 1.8 compiler 20 | // javacParams=-source 1.8 -target 1.8 21 | 22 | // Windows setup 23 | // jdkHome=/C:/Program Files/Java/jdk1.8/ 24 | // dotnetHome=/C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/ 25 | 26 | // Mac setup 27 | //jdkHome=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/ 28 | 29 | -------------------------------------------------------------------------------- /etc/fanr/config.props: -------------------------------------------------------------------------------- 1 | // 2 | // Config: fanr 3 | // 4 | // History: 5 | // 03 May 11 Brian Frank Creation 6 | // 7 | 8 | // Default repository URI to use for all commands. 9 | // Override on command line with the -r option 10 | repo=https://eggbox.fantomfactory.org/fanr/ 11 | 12 | // Number of versions per pod limit for query command. 13 | // Override on command line with the -n option 14 | numVersions=5 15 | 16 | // Hard coded username for default repository 17 | // Override on command line with -u option 18 | // username=someone 19 | 20 | // Hard coded password for default repository 21 | // Override on command line with -p option 22 | // password=xyz123 23 | 24 | -------------------------------------------------------------------------------- /etc/sql/config.props: -------------------------------------------------------------------------------- 1 | // 2 | // Config: sql 3 | // 4 | // History: 5 | // 01 Feb 10 Brian Frank Creation 6 | // 7 | 8 | // Java JDBC drivers; these are java classnames separated by a comma 9 | // which are loaded into the VM using Class.forName on startup 10 | // java.drivers=com.mysql.cj.jdbc.Driver 11 | 12 | // Uncomment this line to revert old "@@" escape behavior. 13 | // See https://github.com/fantom-lang/fantom/pull/51 14 | // deprecatedEscape=true 15 | -------------------------------------------------------------------------------- /etc/syntax/syntax-axon.fog: -------------------------------------------------------------------------------- 1 | // 2 | // Syntax rules for Fan 3 | // 4 | // History: 5 | // 10 Aug 08 Brian Frank Creation 6 | // 7 | 8 | using syntax 9 | 10 | SyntaxRules 11 | { 12 | // list of end of line comment tokens 13 | comments = ["**", "//"] 14 | 15 | // block comments 16 | blockCommentStart = "/*" 17 | blockCommentEnd = "*/" 18 | blockCommentsNest = true 19 | 20 | // string and character literals 21 | strs = 22 | [ 23 | SyntaxStr { delimiter = "\""; escape = '\\'; multiLine = true }, // normal Str 24 | SyntaxStr { delimiter = "`"; escape = '\\'; multiLine = false }, // Uri 25 | ] 26 | 27 | // keyword list 28 | keywords = 29 | [ 30 | "and", 31 | "catch", 32 | "do", 33 | "else", 34 | "end", 35 | "false", 36 | "if", 37 | "not", 38 | "null", 39 | "or", 40 | "return", 41 | "throw", 42 | "true", 43 | "try", 44 | ] 45 | } 46 | 47 | 48 | -------------------------------------------------------------------------------- /etc/syntax/syntax-batch.fog: -------------------------------------------------------------------------------- 1 | // 2 | // Syntax rules for DOS Batch 3 | // 4 | // History: 5 | // 14 Aug 08 Brian Frank Creation 6 | // 7 | 8 | using syntax 9 | 10 | SyntaxRules 11 | { 12 | // list of end of line comment tokens 13 | comments = ["REM", "rem"] 14 | 15 | // block comments 16 | blockCommentStart = null 17 | blockCommentEnd = null 18 | blockCommentsNest = false 19 | 20 | // string and character literals 21 | strs = null 22 | 23 | // keyword list 24 | keywords = null 25 | } 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /etc/syntax/syntax-css.fog: -------------------------------------------------------------------------------- 1 | // 2 | // Syntax rules for Cascading Style Sheets 3 | // 4 | // History: 5 | // 14 Aug 08 Brian Frank Creation 6 | // 7 | 8 | using syntax 9 | 10 | SyntaxRules 11 | { 12 | // list of end of line comment tokens 13 | comments = null 14 | 15 | // block comments 16 | blockCommentStart = "/*" 17 | blockCommentEnd = "*/" 18 | blockCommentsNest = false 19 | 20 | // string and character literals 21 | strs = 22 | [ 23 | SyntaxStr { delimiter = "\""; escape = '\\'; multiLine = false }, 24 | SyntaxStr { delimiter = "'"; escape = '\\'; multiLine = false } 25 | ] 26 | 27 | // keyword list 28 | keywords = null 29 | } 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /etc/syntax/syntax-shell.fog: -------------------------------------------------------------------------------- 1 | // 2 | // Syntax rules for Unix Shells 3 | // 4 | // History: 5 | // 14 Aug 08 Brian Frank Creation 6 | // 7 | 8 | using syntax 9 | 10 | SyntaxRules 11 | { 12 | // list of end of line comment tokens 13 | comments = ["#"] 14 | 15 | // block comments 16 | blockCommentStart = null 17 | blockCommentEnd = null 18 | blockCommentsNest = true 19 | 20 | // string and character literals 21 | strs = 22 | [ 23 | SyntaxStr { delimiter = "\""; escape = '\\'; multiLine = false }, 24 | SyntaxStr { delimiter = "'"; escape = '\\'; multiLine = false } 25 | ] 26 | 27 | // keyword list 28 | keywords = null 29 | } 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /etc/syntax/syntax-xeto.fog: -------------------------------------------------------------------------------- 1 | // 2 | // Syntax rules for Xeto 3 | // 4 | // History: 5 | // 26 Apr 22 Brian Frank Creation 6 | // 7 | 8 | using syntax 9 | 10 | SyntaxRules 11 | { 12 | // bracket symbols 13 | brackets = "<>{}[]" 14 | 15 | // list of end of line comment tokens 16 | comments = ["//"] 17 | 18 | // block comments 19 | blockCommentStart = "/*" 20 | blockCommentEnd = "*/" 21 | blockCommentsNest = true 22 | 23 | // string and character literals 24 | strs = 25 | [ 26 | SyntaxStr { delimiter = "\""; escape = '\\'; multiLine = true }, 27 | SyntaxStr { delimiter = "\"\"\""; escape = '\\'; multiLine = true }, 28 | ] 29 | 30 | // keyword list 31 | keywords = [,] 32 | } 33 | 34 | 35 | -------------------------------------------------------------------------------- /etc/syntax/syntax-xml.fog: -------------------------------------------------------------------------------- 1 | // 2 | // Syntax rules for XML 3 | // 4 | // History: 5 | // 14 Aug 08 Brian Frank Creation 6 | // 7 | 8 | using syntax 9 | 10 | SyntaxRules 11 | { 12 | // bracket symbols 13 | brackets = "<>" 14 | 15 | // list of end of line comment tokens 16 | comments = null 17 | 18 | // block comments 19 | blockCommentStart = "" 21 | blockCommentsNest = false 22 | 23 | // string and character literals 24 | // the problem with using these in XML is that the single quote 25 | // char is often used as an apostrophe such as foo's 26 | strs = null 27 | //[ 28 | // SyntaxStr { delimiter = "'"; multiLine = false }, 29 | // SyntaxStr { delimiter = "\""; multiLine = false }, 30 | //] 31 | 32 | // keyword list 33 | keywords = null 34 | } 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /etc/syntax/syntax-yaml.fog: -------------------------------------------------------------------------------- 1 | // 2 | // Syntax rules for YAML 3 | // 4 | // History: 5 | // 5 Mar 23 Brian Frank Creation 6 | // 7 | 8 | using syntax 9 | 10 | SyntaxRules 11 | { 12 | // bracket symbols 13 | brackets = "<>{}[]" 14 | 15 | // list of end of line comment tokens 16 | comments = ["#"] 17 | 18 | // string and character literals 19 | strs = 20 | [ 21 | SyntaxStr { delimiter = "\""; escape = '\\'; multiLine = false }, 22 | SyntaxStr { delimiter = "'"; escape = '\\'; multiLine = false }, 23 | ] 24 | 25 | // keyword list 26 | keywords = [,] 27 | } 28 | 29 | 30 | -------------------------------------------------------------------------------- /etc/sys/log.props: -------------------------------------------------------------------------------- 1 | // 2 | // log.props 3 | // 4 | // LogLevels: debug, info, warn, err, silent 5 | // 6 | 7 | // typedb=debug 8 | // web=err 9 | 10 | 11 | -------------------------------------------------------------------------------- /etc/sys/timezones.ftz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/etc/sys/timezones.ftz -------------------------------------------------------------------------------- /examples/java/hello.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2008, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 18 Dec 08 Brian Frank Creation 8 | // 9 | 10 | using [java] java.lang 11 | 12 | ** 13 | ** Hello world using System.out.println 14 | ** 15 | class HelloWorld 16 | { 17 | 18 | Void main() 19 | { 20 | System.out.println("Java FFI hello world") 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /examples/web/demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | Wisp Demo Index 3 | 4 |

Wisp Demo Index

5 | 6 |
    7 | 8 |
  • /flag: FileMod for single file (resource file in icon pod).
  • 9 | 10 |
  • /doc: FileMod for directory (available 11 | only if fan.home/docs found).
  • 12 | 13 |
  • /upload: demonstrates how to handle multipart/form-data 14 | uploads
  • 15 | 16 |
  • /logs/sys.log: system log handler.
  • 17 | 18 |
  • /logs/web.log: log file for configured LogMod
  • 19 | 20 |
  • /dump: dumps all the fields of WebReq.
  • 21 | 22 |
      23 | 24 | -------------------------------------------------------------------------------- /examples/web/hello.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2008, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 11 Apr 08 Brian Frank Creation 8 | // 9 | 10 | using util 11 | using web 12 | using wisp 13 | 14 | ** 15 | ** Boot script for web hello world 16 | ** 17 | class WebHello : AbstractMain 18 | { 19 | @Opt { help = "http port" } 20 | Int port := 8080 21 | 22 | override Int run() 23 | { 24 | wisp := WispService 25 | { 26 | it.httpPort = this.port 27 | it.root = HelloMod() 28 | } 29 | return runServices([wisp]) 30 | } 31 | } 32 | 33 | const class HelloMod : WebMod 34 | { 35 | override Void onGet() 36 | { 37 | res.headers["Content-Type"] = "text/plain; charset=utf-8" 38 | res.out.print("hello world #4") 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/.dockerignore: -------------------------------------------------------------------------------- 1 | .dockerignore 2 | dockerfile -------------------------------------------------------------------------------- /src/asn1/fan/AsnErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2021, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 05 Aug 2021 Matthew Giannini Creation 7 | // 8 | 9 | ** 10 | ** A general ASN.1 error 11 | ** 12 | const class AsnErr : Err 13 | { 14 | new make(Str msg := "", Err? cause := null) : super(msg, cause) { } 15 | } 16 | -------------------------------------------------------------------------------- /src/build/fan/BuildLog.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 3 Nov 06 Brian Frank Creation 7 | // 8 | 9 | using compiler 10 | 11 | ** 12 | ** BuildLog is used for logging build scripts 13 | ** 14 | class BuildLog : CompilerLog 15 | { 16 | 17 | new make(OutStream out := Env.cur.out) 18 | : super(out) 19 | { 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/build/fan/Facets.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Feb 10 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Target facet is applied to a `BuildScript` method to 11 | ** indicate it is a build target or goal. 12 | ** 13 | facet class Target 14 | { 15 | ** 16 | ** String for usage help, should be a single short line summary of target 17 | ** 18 | const Str help := "" 19 | } 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/build/fan/FatalBuildErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Nov 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** FatalBuildErr is thrown to immediately terminate 11 | ** the current build script. 12 | ** 13 | const class FatalBuildErr : Err 14 | { 15 | new make(Str msg := "", Err? cause := null) 16 | : super(msg, cause) 17 | { 18 | } 19 | } -------------------------------------------------------------------------------- /src/build/fan/tasks/CreateDir.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Nov 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** CreateDir is used to create a directory 11 | ** 12 | class CreateDir : Task 13 | { 14 | 15 | new make(BuildScript script, File dir) 16 | : super(script) 17 | { 18 | this.dir = dir 19 | } 20 | 21 | override Void run() 22 | { 23 | try 24 | { 25 | if (!dir.exists) 26 | log.info("CreateDir [$dir]") 27 | dir.create 28 | if (!dir.isDir) throw Err.make 29 | } 30 | catch (Err err) 31 | { 32 | throw fatal("Cannot create dir [$dir]", err) 33 | } 34 | } 35 | 36 | File dir 37 | } -------------------------------------------------------------------------------- /src/build/fan/tasks/Delete.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Nov 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Delete is used to delete a file or directory. 11 | ** 12 | class Delete : Task 13 | { 14 | 15 | new make(BuildScript script, File file) 16 | : super(script) 17 | { 18 | this.file = file 19 | } 20 | 21 | override Void run() 22 | { 23 | try 24 | { 25 | if (!file.exists) return 26 | log.info("Delete [$file]") 27 | file.delete 28 | } 29 | catch (Err err) 30 | { 31 | log.err("Cannot delete file [$file]", err) 32 | } 33 | } 34 | 35 | File file 36 | } -------------------------------------------------------------------------------- /src/compiler/fan/CompilerErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 18 May 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** CompilerErr - instances should always be created via CompilerStep.err(). 11 | ** 12 | const class CompilerErr : Err 13 | { 14 | 15 | new make(Str msg, Loc? loc, Err? cause := null, LogLevel level := LogLevel.err) 16 | : super(msg, cause) 17 | { 18 | this.level = level 19 | if (loc != null) 20 | { 21 | this.file = loc.file 22 | this.line = loc.line 23 | this.col = loc.col 24 | } 25 | } 26 | 27 | Loc loc() { Loc(file ?: "Unknown", line, col) } 28 | 29 | Bool isErr() { level === LogLevel.err } 30 | 31 | Bool isWarn() { level === LogLevel.warn } 32 | 33 | const LogLevel level 34 | const Str? file 35 | const Int? line 36 | const Int? col 37 | } -------------------------------------------------------------------------------- /src/compiler/fan/namespace/CDepend.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2011, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 14 Dec 11 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** CDepend is a compiler dependency which wraps `sys::Depend` 11 | ** 12 | class CDepend 13 | { 14 | static CDepend fromStr(Str s) { make(Depend.fromStr(s), null) } 15 | 16 | new make(Depend d, CPod? p) { this.depend = d; this.pod = p } 17 | 18 | static CDepend[] makeList(Depend[] d) { d.map |x->CDepend| { make(x, null) } } 19 | 20 | ** Depend specification 21 | const Depend depend 22 | 23 | ** Pod name of the dependency 24 | Str name() { depend.name } 25 | 26 | ** Resolved pod for the dependency or null if unresolved 27 | CPod? pod 28 | 29 | ** Return depend.toStr 30 | override Str toStr() { depend.toStr } 31 | 32 | } -------------------------------------------------------------------------------- /src/compilerEs/fan/util/JsExtToMime.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2020, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Jul 2023 Matthew Giannini Creation 7 | // 8 | 9 | ** 10 | ** JsExtToMime 11 | ** 12 | class JsExtToMime 13 | { 14 | new make(ModuleSystem ms) { this.ms = ms } 15 | 16 | private ModuleSystem ms 17 | 18 | Void write(OutStream out) 19 | { 20 | ms.writeBeginModule(out) 21 | ms.writeInclude(out, "sys.ext") 22 | 23 | props := Env.cur.findFile(`etc/sys/ext2mime.props`).readProps 24 | out.printLine("const c=sys.MimeType.__cache;") 25 | props.each |mime, ext| 26 | { 27 | out.printLine("c(${ext.toCode},${mime.toCode});") 28 | } 29 | ms.writeEndModule(out) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/compilerJs/fan/ast/JsBlock.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 9 Jul 09 Andy Frank Creation 7 | // 8 | 9 | using compiler 10 | 11 | ** 12 | ** JsBlock 13 | ** 14 | class JsBlock : JsNode 15 | { 16 | new make(JsCompilerSupport support, Block block) : super(support) 17 | { 18 | this.stmts = block.stmts.map |s->JsStmt| { JsStmt.makeFor(support, s) } 19 | } 20 | 21 | override Void write(JsWriter out) 22 | { 23 | stmts.each |s| 24 | { 25 | s.write(out) 26 | out.w(";").nl 27 | } 28 | } 29 | 30 | JsStmt[] stmts // statements for this block 31 | } -------------------------------------------------------------------------------- /src/compilerJs/fan/ast/JsFacet.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2011, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 27 May 2011 Andy Frank Creation 7 | // 8 | 9 | using compiler 10 | 11 | ** 12 | ** JsFacet 13 | ** 14 | class JsFacet : JsNode 15 | { 16 | new make(JsCompilerSupport s, FacetDef f) : super(s) 17 | { 18 | this.type = JsTypeRef(s, f.type, f.loc) 19 | this.val = f.serialize 20 | } 21 | 22 | override Void write(JsWriter out) 23 | { 24 | out.w(val) 25 | } 26 | 27 | JsTypeRef type // facet type 28 | Str val // serialized facet value 29 | } 30 | -------------------------------------------------------------------------------- /src/compilerJs/fan/util/JsExtToMime.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2020, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Sep 20 Matthew Giannini Creation 7 | // 8 | 9 | ** 10 | ** JsExtToMime 11 | ** 12 | class JsExtToMime 13 | { 14 | Void write(OutStream out) 15 | { 16 | props := Env.cur.findFile(`etc/sys/ext2mime.props`).readProps 17 | out.printLine( 18 | "(function() { 19 | ${JsPod.requireSys} 20 | var c=fan.sys.MimeType.cache\$; 21 | ") 22 | 23 | props.each |mime, ext| 24 | { 25 | out.printLine("c($ext.toCode,$mime.toCode);") 26 | } 27 | 28 | out.printLine("}).call(this);") 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/compilerJs/res/scriptRunnerTemplate.js: -------------------------------------------------------------------------------- 1 | //{{require}} 2 | 3 | try { 4 | //{{envDirs}} 5 | fan.{{tempPod}}.Main.main(); 6 | } catch (err) { 7 | console.log('ERROR: ' + err + '\n'); 8 | console.log(err.stack); 9 | if (err == undefined) print('Undefined error\n'); 10 | else if (err.trace) err.trace(); 11 | else 12 | { 13 | var file = err.fileName; if (file == null) file = 'Unknown'; 14 | var line = err.lineNumber; if (line == null) line = 'Unknown'; 15 | fan.sys.Env.cur().out().printLine(err + ' (' + file + ':' + line + ')\n'); 16 | } 17 | } -------------------------------------------------------------------------------- /src/concurrent/es/Actor.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 02 Jun 09 Andy Frank Creation 7 | // 13 May 10 Andy Frank Move from sys to concurrent 8 | // 22 Jun 23 Matthew Giannini Refactor for ES 9 | // 10 | 11 | /** 12 | * Actor. 13 | */ 14 | class Actor extends sys.Obj { 15 | constructor() { super(); } 16 | 17 | typeof() { return Actor.type$; } 18 | 19 | static #locals; 20 | 21 | static locals() { 22 | if (!Actor.#locals) { 23 | const k = sys.Str.type$; 24 | const v = sys.Obj.type$.toNonNullable(); 25 | Actor.#locals = sys.Map.make(k, v); 26 | } 27 | return Actor.#locals; 28 | } 29 | } -------------------------------------------------------------------------------- /src/concurrent/es/ActorFuture.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 22 Jun 2023 Matthew Giannini Refactor for JS 8 | // 9 | 10 | /** 11 | * ActorFuture. 12 | */ 13 | class ActorFuture extends Future { 14 | constructor() { super(); } 15 | 16 | typeof() { return ActorFuture.type$; } 17 | } -------------------------------------------------------------------------------- /src/concurrent/es/AtomicBoolPeer.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Aug 2015 Matthew Giannini Creation 7 | // 22 Jun 2023 Matthew Giannini Refactor for ES 8 | // 9 | 10 | /** 11 | * AtomicBoolPeer 12 | */ 13 | class AtomicBoolPeer extends sys.Obj { 14 | constructor() { super(); } 15 | 16 | #val = false; 17 | val(self, it) { 18 | if (it === undefined) return this.#val; 19 | this.#val = it; 20 | } 21 | 22 | getAndSet(self, val) { 23 | const old = this.#val; 24 | this.#val = val; 25 | return old; 26 | } 27 | 28 | compareAndSet(self, expect, update) { 29 | if (this.#val == expect) { 30 | this.#val = update; 31 | return true; 32 | } 33 | return false; 34 | } 35 | } -------------------------------------------------------------------------------- /src/concurrent/es/Future.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 15 Mar 2010 Andy Frank Creation 7 | // 13 May 2010 Andy Frank Move from sys to concurrent 8 | // 22 Jun 2023 Matthew Giannini Refactor for ES 9 | // 10 | 11 | /** 12 | * Future. 13 | */ 14 | class Future extends sys.Obj { 15 | constructor() { super(); } 16 | 17 | typeof() { return Future.type$; } 18 | 19 | static makeCompletable() { 20 | const self = new Future(); 21 | Future.make$(self); 22 | return self; 23 | } 24 | 25 | static make$(self) { 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/concurrent/es/Lock.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 1 Sep 23 Brian Frank Stub 7 | // 8 | 9 | /** 10 | * Lock 11 | */ 12 | class Lock extends sys.Obj { 13 | 14 | constructor() { super(); } 15 | 16 | typeof() { return Lock.type$; } 17 | 18 | static makeReentrant() { return new Lock(); } 19 | 20 | lock() { } 21 | 22 | unlock() { } 23 | 24 | tryLock(timeout=null) { return true; } 25 | 26 | } -------------------------------------------------------------------------------- /src/concurrent/fan/Errs.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 16 Aug 23 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** QueueOverflowErr is raised by a Future for messages sent to 11 | ** actor that has exceeded the max queue size. 12 | ** 13 | const class QueueOverflowErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) : super(msg, cause) {} 20 | 21 | } 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/concurrent/js/ActorFuture.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * ActorFuture. 11 | */ 12 | fan.concurrent.ActorFuture = fan.sys.Obj.$extend(fan.concurrent.Future); 13 | 14 | fan.concurrent.Future.prototype.$ctor = function() {} 15 | fan.concurrent.Future.prototype.$typeof = function() { return fan.concurrent.ActorFuture.$type; } -------------------------------------------------------------------------------- /src/concurrent/js/Future.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 15 Mar 10 Andy Frank Creation 7 | // 13 May 10 Andy Frank Move from sys to concurrent 8 | // 9 | 10 | /** 11 | * Future. 12 | */ 13 | fan.concurrent.Future = fan.sys.Obj.$extend(fan.sys.Obj); 14 | 15 | fan.concurrent.Future.prototype.$ctor = function() {} 16 | fan.concurrent.Future.prototype.$typeof = function() { return fan.concurrent.Future.$type; } 17 | 18 | fan.concurrent.Future.makeCompletable = function() 19 | { 20 | var self = new fan.concurrent.Future(); 21 | fan.concurrent.Future.make$(self); 22 | return self; 23 | } 24 | 25 | fan.concurrent.Future.make$ = function(self) 26 | { 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/concurrent/js/Lock.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 1 Sep 23 Brian Frank Stub 7 | // 8 | 9 | /** 10 | * Lock 11 | */ 12 | fan.concurrent.Lock = fan.sys.Obj.$extend(fan.sys.Obj); 13 | 14 | fan.concurrent.Lock.prototype.$ctor = function() {} 15 | fan.concurrent.Lock.prototype.$typeof = function() { return fan.concurrent.Lock.$type; } 16 | 17 | -------------------------------------------------------------------------------- /src/crypto/fan/Csr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2021, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 13 Aug 2021 Matthew Giannini Creation 7 | // 8 | 9 | ** 10 | ** A Certificate Signing Request (CSR) 11 | ** 12 | const mixin Csr 13 | { 14 | ** Get the public key for the CSR 15 | abstract PubKey pub() 16 | 17 | ** Get the subject dn 18 | abstract Str subject() 19 | 20 | ** Get the immutable signing options 21 | abstract Str:Obj opts() 22 | } -------------------------------------------------------------------------------- /src/crypto/fan/Jwk.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2024, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Mar 2024 Ross Schwalm Creation 7 | // 8 | 9 | ** 10 | ** Models a JSON Web Key (JWK) as specified by [RFC7517]`https://datatracker.ietf.org/doc/html/rfc7517` 11 | ** 12 | ** JWKs wrap a Key[`Key`] object with additional metadata 13 | ** 14 | const mixin Jwk 15 | { 16 | ** Jwk 17 | abstract Str:Obj meta() 18 | 19 | ** Key 20 | abstract Key key() 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/cryptoJava/fan/JDigest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2021, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 16 Aug 2021 Matthew Giannini Creation 7 | // 8 | 9 | using crypto 10 | 11 | native const class JDigest : Digest 12 | { 13 | new make(Str algorithm) 14 | 15 | override Str algorithm() 16 | 17 | override Int digestSize() 18 | 19 | override Buf digest() 20 | 21 | override This update(Buf buf) 22 | 23 | override This updateAscii(Str str) 24 | 25 | override This updateByte(Int i) 26 | 27 | override This updateI4(Int i) 28 | 29 | override This updateI8(Int i) 30 | 31 | override This reset() 32 | } -------------------------------------------------------------------------------- /src/cryptoJava/fan/X509.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2021, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 16 Aug 2021 Matthew Giannini Creation 7 | // 8 | 9 | using crypto 10 | 11 | ** 12 | ** X.509 Certificate. 13 | ** 14 | native const class X509 : Cert 15 | { 16 | static X509[] load(InStream in) 17 | 18 | static X509[] loadCertsForUri(Uri uri) 19 | 20 | override Str subject() 21 | 22 | override Str issuer() 23 | 24 | override Str certType() 25 | 26 | override Buf encoded() 27 | 28 | override PubKey pub() 29 | 30 | override Str toStr() 31 | 32 | Buf serialNum() 33 | 34 | Date notBefore() 35 | 36 | Date notAfter() 37 | 38 | override Bool isSelfSigned() 39 | 40 | override Bool isCA() 41 | } -------------------------------------------------------------------------------- /src/cryptoJava/test/DnTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2021, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Aug 2021 Matthew Giannini Creation 7 | // 8 | 9 | class DnTest : Test 10 | { 11 | // TODO: these tests are by no means sufficient. 12 | 13 | Void testRfc4514Type() 14 | { 15 | verifyEq("CN", parse("cn=foo").first.shortName) 16 | verifyNull(parse("0.0.40.9999=foo").first.shortName) 17 | 18 | verifyErr(ParseErr#) { parse("00.1=foo") } 19 | verifyErr(ParseErr#) { parse("0.01=foo") } 20 | verifyErr(ParseErr#) { parse("0.0.=foo") } 21 | } 22 | 23 | Void testRfc4514Val() 24 | { 25 | verifyEq("foo", parse("cn=foo").first.val) 26 | } 27 | 28 | private Rdn[] parse(Str name) 29 | { 30 | DnParser(name).parse 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /src/doc/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2006, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 1 Jan 07 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** doc/ 14 | ** 15 | class Build : BuildGroup 16 | { 17 | new make() 18 | { 19 | childrenScripts = 20 | [ 21 | `docIntro/build.fan`, 22 | `docLang/build.fan`, 23 | `docTools/build.fan`, 24 | `docFanr/build.fan`, 25 | `docDomkit/build.fan`, 26 | ] 27 | } 28 | } -------------------------------------------------------------------------------- /src/doc/docDomkit/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2017, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 11 Jan 2017 Andy Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: docDomkit 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "docDomkit" 20 | summary = "Fantom DomKit HTML5 UI framework documentation" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Docs", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | resDirs = [`doc/`] 29 | } 30 | } -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-Button-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-Button-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-Checkbox-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-Checkbox-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-Combo-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-Combo-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-ListButton-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-ListButton-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-ListButton-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-ListButton-2.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-Menu-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-Menu-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-ProgressBar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-ProgressBar-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-RadioButton-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-RadioButton-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-Table-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-Table-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-TextArea-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-TextArea-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-TextField-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-TextField-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-ToggleButton-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-ToggleButton-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Control-Tree-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Control-Tree-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Layout-CardBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Layout-CardBox.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Layout-FlowBox-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Layout-FlowBox-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Layout-FlowBox-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Layout-FlowBox-2.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Layout-FlowBox-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Layout-FlowBox-3.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Layout-GridBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Layout-GridBox.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Layout-WellBox-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Layout-WellBox-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Modal-Dialog-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Modal-Dialog-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/Modal-Popup-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docDomkit/doc/Modal-Popup-1.png -------------------------------------------------------------------------------- /src/doc/docDomkit/doc/index.fog: -------------------------------------------------------------------------------- 1 | ************************************************************************** 2 | ** title: Index 3 | ** author: Andy Frank 4 | ** created: 11 Jun 2017 5 | ** copyright: Copyright (c) 2017, Brian Frank and Andy Frank 6 | ** license: Licensed under the Academic Free License version 3.0 7 | ************************************************************************** 8 | 9 | [ 10 | [`Intro`, "Introduction"], 11 | [`Dom`, "Low-level DOM layer documentation"], 12 | [`Layout`, "Layout container documentation"], 13 | [`Controls`, "Control library documentation"], 14 | [`Modals`, "Modal library documentation"], 15 | [`Dnd`, "Drag and drop documentation"], 16 | [`Theming`, "Customizing DomKit CSS"], 17 | ] -------------------------------------------------------------------------------- /src/doc/docFanr/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2011, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 24 Jun 11 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: docFanr 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "docFanr" 20 | summary = "Documentation for fanr repository and package management" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Docs", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | resDirs = [`doc/`] 29 | } 30 | } -------------------------------------------------------------------------------- /src/doc/docFanr/doc/index.fog: -------------------------------------------------------------------------------- 1 | ************************************************************************** 2 | ** title: Index 3 | ** author: Brian Frank 4 | ** created: 24 Jun 11 5 | ** copyright: Copyright (c) 2011, Brian Frank and Andy Frank 6 | ** license: Licensed under the Academic Free License version 3.0 7 | ************************************************************************** 8 | 9 | [ 10 | [`Concepts`, "fundamental concepts of architecture"], 11 | [`Queries`, "the fanr query language"], 12 | [`FileRepos`, "file based repositories"], 13 | [`WebRepos`, "web based repositories and HTTP protocol"], 14 | [`Tool`, "usage of command line tool"], 15 | ] -------------------------------------------------------------------------------- /src/doc/docIntro/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2007, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 6 May 07 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: docIntro 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "docIntro" 20 | summary = "Fantom overview and getting started" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Docs", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | resDirs = [`doc/`] 29 | } 30 | } -------------------------------------------------------------------------------- /src/doc/docIntro/doc/index.fog: -------------------------------------------------------------------------------- 1 | ************************************************************************** 2 | ** title: Index 3 | ** author: Brian Frank 4 | ** created: 3 Jun 07 5 | ** copyright: Copyright (c) 2007, Brian Frank and Andy Frank 6 | ** license: Licensed under the Academic Free License version 3.0 7 | ************************************************************************** 8 | 9 | [ 10 | [`Readme`, "readme for distribution"], 11 | [`StartHere`, "learn how to get started and use the documentation"], 12 | [`Tour`, "whirlwind tour of Fantom's features"], 13 | [`WhyFantom`, "why we built Fantom and what problems we desire to solve"], 14 | [`HelloWorld`, "getting started with hello world"], 15 | [`Faq`, "frequently asked questions"], 16 | [`License`, "Academic Free License 3.0"], 17 | [`ChangeLog`, "list of changes in each build"] 18 | ] -------------------------------------------------------------------------------- /src/doc/docLang/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2007, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 6 May 07 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: docLang 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "docLang" 20 | summary = "Fantom language documentation" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Docs", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | resDirs = [`doc/`] 29 | } 30 | } -------------------------------------------------------------------------------- /src/doc/docLang/doc/deployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/doc/docLang/doc/deployment.png -------------------------------------------------------------------------------- /src/doc/docTools/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2008, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 4 Jan 08 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: docTools 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "docTools" 20 | summary = "Fantom command line tools" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Docs", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | resDirs = [`doc/`] 29 | } 30 | } -------------------------------------------------------------------------------- /src/doc/docTools/doc/index.fog: -------------------------------------------------------------------------------- 1 | ************************************************************************** 2 | ** title: Index 3 | ** author: Brian Frank 4 | ** created: 01 Jul 07 5 | ** copyright: Copyright (c) 2007, Brian Frank and Andy Frank 6 | ** license: Licensed under the Academic Free License version 3.0 7 | ************************************************************************** 8 | 9 | [ 10 | [`Setup`, "how to get everything setup"], 11 | [`Fan`, "fan launcher"], 12 | [`Fansh`, "interactive shell for exploring"], 13 | [`Fant`, "unit testing framework"], 14 | [`Fanp`, "fcode disassembler"], 15 | [`Build`, "build toolkit"], 16 | [`Bootstrap`, "how to recompile the runtime and compiler itself"], 17 | [`IDEs`, "links to other Fantom IDEs"], 18 | ] -------------------------------------------------------------------------------- /src/dom/es/DomImagePeer.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Mar 2022 Brian Frank Creation 7 | // 10 Jun 2023 Kiera O'Flynn Refactor to ES 8 | // 9 | 10 | class DomImagePeer extends sys.Obj { 11 | 12 | constructor(self) { super(); } 13 | 14 | init(self, elem) 15 | { 16 | // map dom::Elem("img") to its HTMLImageElement 17 | this.elem = elem.peer.elem 18 | } 19 | 20 | isLoaded(self) 21 | { 22 | return this.elem.complete; 23 | } 24 | 25 | size(self) 26 | { 27 | return graphics.Size.make(this.w(), this.h()); 28 | } 29 | 30 | w(self) 31 | { 32 | return sys.Float.make(this.elem.naturalWidth); 33 | } 34 | 35 | h(self) 36 | { 37 | return sys.Float.make(this.elem.naturalHeight); 38 | } 39 | } -------------------------------------------------------------------------------- /src/dom/es/TextSelPeer.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2022, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 18 Mar 2022 Andy Frank Creation 7 | // 10 Jun 2023 Kiera O'Flynn Refactor to ES 8 | // 9 | 10 | class TextSelPeer extends sys.Obj { 11 | constructor(self) 12 | { 13 | super(); 14 | this.sel = null; 15 | } 16 | 17 | clear(self) 18 | { 19 | return this.sel.removeAllRanges(); 20 | } 21 | } -------------------------------------------------------------------------------- /src/dom/es/WeakMapPeer.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2016, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 9 Mar 2016 Andy Frank Creation 7 | // 10 Jun 2023 Kiera O'Flynn Refactor to ES 8 | // 9 | 10 | class WeakMapPeer extends sys.Obj { 11 | 12 | constructor(self) { super(); this.map = new js.WeakMap(); } 13 | has(self, key) { return this.map.has(key); } 14 | get(self, key) { return this.map.get(key); } 15 | set(self, key, val) { this.map.set(key, val); return self; } 16 | delete(self, key) { return this.map.delete(key); } 17 | 18 | } -------------------------------------------------------------------------------- /src/dom/fan/DomImage.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2022, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Mar 2022 Brian Frank Creation 7 | // 8 | 9 | using graphics 10 | 11 | ** 12 | ** Dom implementation of the Image API backed by an HTMLImageElement 13 | ** 14 | @Js 15 | internal const class DomImage : Image 16 | { 17 | new make(Uri uri, MimeType mime, Elem elem) 18 | { 19 | this.uri = uri 20 | this.mime = mime 21 | this.init(elem) 22 | } 23 | 24 | private native Void init(Elem elem) 25 | 26 | const override Uri uri 27 | 28 | const override MimeType mime 29 | 30 | override native Bool isLoaded() 31 | 32 | override native Size size() 33 | 34 | override native Float w() 35 | 36 | override native Float h() 37 | 38 | @Operator override Obj? get(Str prop) { null } 39 | 40 | } 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/dom/fan/TextSel.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2022, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 18 Mar 2022 Andy Frank Creation 7 | // 8 | 9 | ** 10 | ** TextSel models the current caret pos and text selection by user. 11 | ** 12 | @NoDoc @Js class TextSel 13 | { 14 | ** Private ctor. 15 | private new make() {} 16 | 17 | ** Clear all selection from page. 18 | native Void clear() 19 | } -------------------------------------------------------------------------------- /src/dom/fan/WeakMap.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2016, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 9 Mar 2016 Andy Frank Creation 7 | // 8 | 9 | using web 10 | 11 | ** 12 | ** WeakMap is a collection of key/value pairs in which the keys are 13 | ** weakly referenced. The keys must be objects and the values can 14 | ** be arbitrary values. 15 | ** 16 | @Js 17 | class WeakMap 18 | { 19 | ** Return 'true' if key exists in this map. 20 | native Bool has(Obj key) 21 | 22 | ** Returns the value associated to the key, or 'null' if there is none. 23 | @Operator native Obj? get(Obj key) 24 | 25 | ** Sets value for given key in this map. Returns this. 26 | @Operator native This set(Obj key, Obj val) 27 | 28 | ** Removes any value associated to the key. Returns 'true' 29 | ** if an element has been removed successfully. 30 | native Bool delete(Obj key) 31 | } -------------------------------------------------------------------------------- /src/dom/java/HttpReqPeer.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 8 Feb 2023 Brian Frank Creation 7 | // 8 | 9 | package fan.dom; 10 | 11 | import fan.sys.*; 12 | 13 | public class HttpReqPeer 14 | { 15 | public static HttpReqPeer make(HttpReq fan) 16 | { 17 | return DomPeerFactory.factory().makeHttpReq(fan); 18 | } 19 | 20 | public void send (HttpReq self, String method, Object content, Func c) { throw err(); } 21 | public String encodeForm(HttpReq self, Map form) { throw err(); } 22 | 23 | private static Err err() { return UnsupportedErr.make(); } 24 | } -------------------------------------------------------------------------------- /src/dom/java/QuerySelector.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2018, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 30 Nov 2018 Andy Frank Creation 7 | // 8 | 9 | package fan.dom; 10 | 11 | import java.util.ArrayList; 12 | 13 | public class QuerySelector 14 | { 15 | /* Parse a query selector string */ 16 | public static QuerySelector parse(String selectors) 17 | { 18 | QuerySelector q = new QuerySelector(); 19 | 20 | String[] r = selectors.split("\\s"); 21 | for (int i=0; i div { 12 | white-space: nowrap; 13 | text-overflow: ellipsis; 14 | overflow: hidden; 15 | } 16 | 17 | div.domkit-ListButton-MenuItem.domkit-MenuItem { 18 | white-space: nowrap; 19 | padding-left: 22px; 20 | } 21 | 22 | div.domkit-ListButton-MenuItem.domkit-MenuItem.sel { 23 | padding-left: 6px; 24 | } 25 | 26 | div.domkit-ListButton-MenuItem.domkit-MenuItem.sel:before { 27 | content: "\2713"; 28 | width: 16px; 29 | float: left; 30 | } -------------------------------------------------------------------------------- /src/domkit/css/Menu.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 13 May 2015 Andy Frank Creation 7 | // 8 | 9 | div.domkit-Menu { 10 | background: #fff !important; 11 | border-radius: 3px; 12 | overflow: auto; 13 | outline: none; 14 | padding: 5px 0; 15 | } 16 | 17 | div.domkit-MenuItem { 18 | display: block; 19 | padding-left: 10px; 20 | padding-right: 20px; 21 | min-width: 100px; 22 | cursor: default; 23 | } 24 | -------------------------------------------------------------------------------- /src/domkit/css/Popup.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 19 Dec 2014 Andy Frank Creation 7 | // 8 | 9 | div.domkit-Popup { 10 | position: absolute; 11 | outline: none; 12 | background: rgba(248, 248, 248, 0.95); 13 | border: 1px solid #ddd; 14 | box-shadow: 0px 9px 18px rgba(0, 0, 0, 0.25); 15 | box-sizing: border-box; 16 | } 17 | 18 | div.domkit-Popup-mask { 19 | position: absolute; 20 | top: 0; 21 | left: 0; 22 | width: 100%; 23 | height: 100%; 24 | z-index: 100; 25 | } -------------------------------------------------------------------------------- /src/domkit/css/ProgressBar.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2016, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 12 May 2016 Andy Frank Creation 7 | // 8 | 9 | div.domkit-ProgressBar { 10 | width: 200px; 11 | } -------------------------------------------------------------------------------- /src/domkit/css/RadioButton.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 8 Sep 2015 Andy Frank Creation 7 | // 8 | 9 | input.domkit-RadioButton { 10 | position: relative; 11 | bottom: -2px; 12 | margin: 0; 13 | padding: 0; 14 | } 15 | 16 | label input.domkit-RadioButton + span.domkit-Label { 17 | padding-left: 6px; 18 | -webkit-user-select: none; 19 | -moz-user-select: none; 20 | -ms-user-select: none; 21 | user-select: none; 22 | } 23 | 24 | // TODO: how do we handle this in base? 25 | input.domkit-RadioButton[disabled] + span.domkit-Label { 26 | opacity: 0.3; 27 | } -------------------------------------------------------------------------------- /src/domkit/css/SashBox.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 6 Jun 2015 Andy Frank Creation 7 | // 8 | 9 | div.domkit-SashBox { 10 | overflow: hidden; /* required for dir=right */ 11 | position: relative; 12 | } 13 | 14 | div.domkit-SashBox-div {} 15 | -------------------------------------------------------------------------------- /src/domkit/css/ScrollBox.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 22 Dec 2014 Andy Frank Creation 7 | // 8 | 9 | div.domkit-ScrollBox { 10 | overflow: auto; 11 | } -------------------------------------------------------------------------------- /src/domkit/css/Sheet.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2016, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 15 Mar 2016 Andy Frank Creation 7 | // 8 | 9 | div.domkit-Sheet { 10 | position: absolute; 11 | overflow: hidden; 12 | outline: none; 13 | } 14 | 15 | div.domkit-Sheet-mask { 16 | position: absolute; 17 | top: 0; 18 | left: 0; 19 | width: 100%; 20 | height: 100%; 21 | z-index: 100; 22 | } -------------------------------------------------------------------------------- /src/domkit/css/TextArea.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Dec 2014 Andy Frank Creation 7 | // 8 | 9 | textarea.domkit-TextArea { 10 | width: 100%; 11 | height: 100%; 12 | outline: none; 13 | } 14 | -------------------------------------------------------------------------------- /src/domkit/css/TextField.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Dec 2014 Andy Frank Creation 7 | // 8 | 9 | input.domkit-TextField { 10 | outline: none; 11 | } 12 | 13 | input.domkit-TextField[type='password'] { 14 | font-family: sans-serif; 15 | } 16 | -------------------------------------------------------------------------------- /src/domkit/css/WellBox.css: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2017, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 14 Mar 2017 Andy Frank Creation 7 | // 8 | 9 | div.domkit-WellBox { 10 | background: #e5e5e5; 11 | border-radius: 4px; 12 | padding: 10px; 13 | } -------------------------------------------------------------------------------- /src/domkit/fan/Align.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 7 Oct 2015 Andy Frank Creation 7 | // 8 | 9 | using dom 10 | 11 | ** 12 | ** Alignment enums: top, left, bottom, right, center, fill 13 | ** 14 | @Js enum class Align 15 | { 16 | top, 17 | left, 18 | bottom, 19 | right, 20 | center, 21 | fill 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/domkit/fan/Box.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 19 Dec 2014 Andy Frank Creation 7 | // 8 | 9 | using dom 10 | 11 | ** 12 | ** Box defaults style to: 13 | ** 14 | ** display: block; 15 | ** box-sizing: border-box; 16 | ** width: 100%; 17 | ** height: 100%; 18 | ** position: relative; 19 | ** 20 | @Js class Box : Elem 21 | { 22 | new make() : super("div") 23 | { 24 | this.style.addClass("domkit-Box") 25 | } 26 | } -------------------------------------------------------------------------------- /src/domkit/fan/Dir.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 7 Oct 2015 Andy Frank Creation 7 | // 8 | 9 | using dom 10 | 11 | ** 12 | ** Direction enums: up, down, left, right 13 | ** 14 | @Js enum class Dir 15 | { 16 | up, 17 | down, 18 | left, 19 | right 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/domkit/fan/Label.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 15 Feb 2015 Brian Frank Creation 7 | // 8 | 9 | using dom 10 | 11 | ** 12 | ** Simple text based element. 13 | ** 14 | ** See also: [docDomkit]`docDomkit::Controls#label` 15 | ** 16 | @Js class Label : Elem 17 | { 18 | new make() : super("span") 19 | { 20 | this.style.addClass("domkit-control domkit-Label") 21 | } 22 | } -------------------------------------------------------------------------------- /src/domkit/fan/Link.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 5 Jan 2015 Andy Frank Creation 7 | // 8 | 9 | using dom 10 | 11 | ** 12 | ** Hyperlink anchor element 13 | ** 14 | @Js class Link : Elem 15 | { 16 | new make() : super("a") 17 | { 18 | this.style.addClass("domkit-control domkit-Link") 19 | this.uri = `#` 20 | } 21 | 22 | ** The target attribute specifies where to open the linked document. 23 | Str target 24 | { 25 | get { this->target } 26 | set { this->target = it } 27 | } 28 | 29 | ** URI to hyperlink to. 30 | Uri uri := `#` 31 | { 32 | set 33 | { 34 | &uri = it 35 | setAttr("href", &uri.encode) 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/domkit/fan/ScrollBox.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 22 Dec 2014 Andy Frank Creation 7 | // 8 | 9 | using dom 10 | 11 | ** 12 | ** ScrollBox displays content in a scrollable viewport. 13 | ** 14 | @Js class ScrollBox : Box 15 | { 16 | new make() : super() 17 | { 18 | this.style.addClass("domkit-ScrollBox").addClass("domkit-border") 19 | this.onEvent("scroll", false) |e| { fireScroll(e) } 20 | } 21 | 22 | ** Callback when box is scrolled. 23 | Void onScroll(|This| f) { this.cbScroll = f } 24 | 25 | private Void fireScroll(Event e) { cbScroll?.call(this) } 26 | private Func? cbScroll := null 27 | } -------------------------------------------------------------------------------- /src/domkit/pod.fandoc: -------------------------------------------------------------------------------- 1 | ************************************************************************** 2 | ** title: DomKit 3 | ** author: Andy Frank 4 | ** created: 31 Mar 2015 5 | ** copyright: Copyright (c) 2014, Brian Frank and Andy Frank 6 | ************************************************************************** 7 | 8 | Overview [#overview] 9 | ******************** 10 | DomKit is a HTML5 UI toolkit designed for building Web-based user interfaces. 11 | 12 | See [docDomkit]`docDomkit::Intro` for full documentation. 13 | -------------------------------------------------------------------------------- /src/email/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2008, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 29 Apr 08 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: email 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "email" 20 | summary = "Email support" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Core", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | depends = ["sys 1.0", "inet 1.0"] 29 | srcDirs = [`fan/`, `test/`] 30 | docSrc = true 31 | } 32 | } -------------------------------------------------------------------------------- /src/email/fan/SmtpErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 2 May 08 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** SmtpErr indicates an error during an SMTP transaction. 11 | ** 12 | const class SmtpErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with error code, message, and optional cause. 17 | ** 18 | new make(Int code, Str? msg, Err? cause := null) 19 | : super(msg, cause) 20 | { 21 | this.code = code 22 | } 23 | 24 | ** 25 | ** Construct with SmtpRes (internal only) 26 | ** 27 | internal new makeRes(SmtpRes res, Err? cause := null) 28 | : super.make(res.toStr, cause) 29 | { 30 | this.code = res.code 31 | } 32 | 33 | ** 34 | ** The SMTP error code defined by RFC 2821 35 | ** 36 | const Int code 37 | } -------------------------------------------------------------------------------- /src/fandoc/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2007, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 16 Feb 07 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: fandoc 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "fandoc" 20 | summary = "Fandoc parser and DOM" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Core", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | depends = ["sys 1.0"] 29 | srcDirs = [`fan/`, `test/`] 30 | docSrc = true 31 | } 32 | } -------------------------------------------------------------------------------- /src/fandoc/fan/DocWriter.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Feb 07 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** DocWriter is used to output a fandoc model using a series of callbacks. 11 | ** 12 | ** See [pod doc]`pod-doc#api` for usage. 13 | ** 14 | @Js 15 | mixin DocWriter 16 | { 17 | 18 | ** 19 | ** Enter a document. 20 | ** 21 | abstract Void docStart(Doc doc) 22 | 23 | ** 24 | ** Exit a document. 25 | ** 26 | abstract Void docEnd(Doc doc) 27 | 28 | ** 29 | ** Enter an element. 30 | ** 31 | abstract Void elemStart(DocElem elem) 32 | 33 | ** 34 | ** Exit an element. 35 | ** 36 | abstract Void elemEnd(DocElem elem) 37 | 38 | ** 39 | ** Write text node. 40 | ** 41 | abstract Void text(DocText text) 42 | 43 | } 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/fandoc/fan/FandocErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 19 May 08 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** FandocErr 11 | ** 12 | @Js 13 | const class FandocErr : Err 14 | { 15 | 16 | new make(Str msg, Str file, Int line, Err? cause := null) 17 | : super(msg, cause) 18 | { 19 | this.file = file 20 | this.line = line 21 | } 22 | 23 | override Str toStr() 24 | { 25 | return "$msg [$file:$line]" 26 | } 27 | 28 | const Str file 29 | const Int line 30 | } -------------------------------------------------------------------------------- /src/fansc/FanSc/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/fansc/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2015, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 31 Jul 15 Matthew Giannini Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: fansc.exe 14 | ** 15 | class Build : BuildCs 16 | { 17 | 18 | new make() 19 | { 20 | output = devHomeDir.uri + `bin/fansc.exe` 21 | targetType = "exe" 22 | 23 | srcDirs = [`FanSc/`] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/fansh/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2008, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 1 Jan 08 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: fansh 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "fansh" 20 | summary = "Interactive Fantom Shell" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Core", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | depends = ["sys 1.0", "compiler 1.0", "concurrent 1.0"] 29 | srcDirs = [`fan/`] 30 | docSrc = true 31 | } 32 | } -------------------------------------------------------------------------------- /src/graphics/fan/Paint.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2022, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 28 Feb 2022 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Paint models the color, image, or pattern used to stroke or fill a shape. 11 | ** Currently there is only one implementation: `Color`. 12 | ** 13 | @Js 14 | const mixin Paint 15 | { 16 | ** Is this solid color paint 17 | abstract Bool isColorPaint() 18 | 19 | ** Return as solid Color 20 | abstract Color asColorPaint() 21 | } -------------------------------------------------------------------------------- /src/inet/fan/UnknownHostErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 9 Feb 07 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** UnknownHostErr indicates a failure to resolve a hostname to an IP address. 11 | ** 12 | const class UnknownHostErr : IOErr 13 | { 14 | 15 | new make(Str msg, Err? cause := null) 16 | : super(msg, cause) 17 | { 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /src/markdown/fan/parser/block/DocumentBlockParser.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2024, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 08 Oct 2024 Matthew Giannini Creation 7 | // 8 | 9 | @Js 10 | internal class DocumentBlockParser : BlockParser 11 | { 12 | new make() { } 13 | 14 | ////////////////////////////////////////////////////////////////////////// 15 | // BlockParser 16 | ////////////////////////////////////////////////////////////////////////// 17 | 18 | override Document block := Document() { private set } 19 | 20 | override const Bool isContainer := true 21 | 22 | override Bool canContain(Block block) { true } 23 | 24 | override BlockContinue? tryContinue(ParserState state) 25 | { 26 | BlockContinue.atIndex(state.index) 27 | } 28 | 29 | override Void addLine(SourceLine line) { } 30 | 31 | } -------------------------------------------------------------------------------- /src/markdown/test/DelimiterProcessorTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2024, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 25 Oct 2024 Matthew Giannini Creation 7 | // 8 | 9 | class DelimiterProcessorTest : CoreRenderingTest 10 | { 11 | // Void testDelimiterProcessorWithInvalidDelimiterUse() 12 | // { 13 | // // TODO: need pluggable 14 | // } 15 | } -------------------------------------------------------------------------------- /src/markdown/test/ThematicBreakParserTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2024, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 28 Oct 2024 Matthew Giannini Creation 7 | // 8 | 9 | @Js 10 | class ThematicBreakParserTest : Test 11 | { 12 | Parser? parser 13 | 14 | override Void setup() { this.parser = Parser() } 15 | 16 | Void testLiteral() 17 | { 18 | verifyLiteral("***", "***") 19 | verifyLiteral("-- -", "-- -") 20 | verifyLiteral(" __ __ __ ", " __ __ __ ") 21 | verifyLiteral("***", "> ***") 22 | } 23 | 24 | private Void verifyLiteral(Str expected, Str input) 25 | { 26 | tb := parser.parse(input).find(ThematicBreak#) as ThematicBreak 27 | verifyNotNull(tb) 28 | verifyEq(expected, tb.literal) 29 | } 30 | } -------------------------------------------------------------------------------- /src/math/fan/Math.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2020, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Aug 20 Matthew Giannini Creation 7 | // 8 | 9 | 10 | ** 11 | ** This mixin contains a set of utilities and functions for various math operations. 12 | ** 13 | final class Math 14 | { 15 | ** Create a new `Matrix` with the given number of rows and columns. 16 | ** All elements of the matrix are initialized to zero. 17 | static Matrix matrix(Int numRows, Int numCols) { MMatrix(numRows, numCols) } 18 | } -------------------------------------------------------------------------------- /src/math/pod.fandoc: -------------------------------------------------------------------------------- 1 | ************************************************************************** 2 | ** title: Math 3 | ** author: Matthew Giannini 4 | ** created: 14 Aug 20 5 | ** copyright: Copyright (c) 2020, Brian Frank and Andy Frank 6 | ** license: Licensed under the Academic Free License version 3.0 7 | ************************************************************************** 8 | 9 | Overview [#overview] 10 | ******************** 11 | The [math]`math::index` pod defines standard classes and utilities for performing 12 | math computations. 13 | 14 | Matrix [#matrix] 15 | **************** 16 | The library includes a `Matrix` API and a default implementation. A matrix can be created 17 | using the `Math.matrix` utility. 18 | 19 | matrix := Math.matrix(2,2) 20 | 21 | -------------------------------------------------------------------------------- /src/math/test/BigIntTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2025, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 3 Jun 25 Brian Frank Creation 7 | // 8 | 9 | class BigIntTest : Test 10 | { 11 | Void testGetSet() 12 | { 13 | i := BigInt("123") 14 | verifyEq(i.typeof, BigInt#) 15 | 16 | verifyEq(BigInt.defVal, BigInt(0)) 17 | verifyEq(BigInt.zero, BigInt(0)) 18 | verifyEq(BigInt.one, BigInt(1)) 19 | 20 | verifyEq(i + 3, BigInt("126")) 21 | verifyEq(i - 3, BigInt("120")) 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/nodeJs/fan/Main.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, SkyFoundry LLC 3 | // All Rights Reserved 4 | // 5 | // History: 6 | // 27 Jul 2023 Matthew Giannini Creation 7 | // 8 | 9 | using util 10 | 11 | ** 12 | ** Command line main 13 | ** 14 | class Main 15 | { 16 | static Int main(Str[] args) 17 | { 18 | // lookup command 19 | if (args.isEmpty) args = ["help"] 20 | name := args.first 21 | cmd := NodeJsCmd.find(name) 22 | if (cmd == null) 23 | { 24 | echo("ERROR: unknown nodeJs command '$name'") 25 | return 1 26 | } 27 | 28 | // strip commandname from args and process as util::AbstractMain 29 | return cmd.main(args.dup[1..-1]) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/nodeJs/res/scriptRunnerTemplate.js: -------------------------------------------------------------------------------- 1 | const __require = (m) => { 2 | const name = m.split('.')[0]; 3 | const fan = this.fan; 4 | if (typeof require === 'undefined') return name == "fan" ? fan : fan[name]; 5 | try { return require(`${m}`); } catch (e) { /* ignore */ } 6 | } 7 | 8 | 9 | //{{include}} 10 | 11 | try { 12 | //{{envDirs}} 13 | {{tempPod}}.Main.main(); 14 | } catch (err) { 15 | console.log('ERROR: ' + err + '\n'); 16 | console.log(err.stack); 17 | if (err == undefined) print('Undefined error\n'); 18 | else if (err.trace) err.trace(); 19 | else 20 | { 21 | var file = err.fileName; if (file == null) file = 'Unknown'; 22 | var line = err.lineNumber; if (line == null) line = 'Unknown'; 23 | sys.Env.cur().out().printLine(err + ' (' + file + ':' + line + ')\n'); 24 | } 25 | } -------------------------------------------------------------------------------- /src/nodeJs/res/testRunnerTemplate.js: -------------------------------------------------------------------------------- 1 | const __require = (m) => { 2 | const name = m.split('.')[0]; 3 | const fan = this.fan; 4 | if (typeof require === 'undefined') return name == "fan" ? fan : fan[name]; 5 | try { return require(`${m}`); } catch (e) { /* ignore */ } 6 | } 7 | 8 | //{{include}} 9 | 10 | //{{envDirs}} 11 | 12 | //{{targets}} 13 | // Delegate to standard TestRunner 14 | sys.Type.find("util::TestRunner").method("main").call(targets); 15 | -------------------------------------------------------------------------------- /src/sql/fan/SqlErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 30 Feb 07 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** SqlErr indicates an error from the SQL database driver. 11 | ** 12 | const class SqlErr : Err 13 | { 14 | 15 | new make(Str? msg, Err? cause := null) 16 | : super(msg, cause) 17 | { 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /src/sql/java/Cols.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 01 Jul 07 Brian Frank Creation 7 | // 8 | package fan.sql; 9 | 10 | import java.util.HashMap; 11 | import fan.sys.FanStr; 12 | import fan.sys.List; 13 | 14 | public class Cols 15 | { 16 | 17 | Cols(List list) 18 | { 19 | this.list = list.ro(); 20 | } 21 | 22 | Col get(String name) 23 | { 24 | if (map == null) 25 | { 26 | map = new HashMap(); 27 | for (int i=0; i 15 | /// Service. 16 | /// 17 | public interface Service 18 | { 19 | 20 | bool isInstalled(); 21 | 22 | bool isRunning(); 23 | 24 | Service install(); 25 | 26 | Service uninstall(); 27 | 28 | Service start(); 29 | 30 | Service stop(); 31 | 32 | void onStart(); 33 | 34 | void onStop(); 35 | 36 | } 37 | } -------------------------------------------------------------------------------- /src/sys/dotnet/fan/sys/This.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 25 Apr 08 Brian Frank Creation 7 | // 8 | 9 | using System; 10 | 11 | namespace Fan.Sys 12 | { 13 | /// 14 | /// This represents a method return type which is always "this type". 15 | /// 16 | public class This 17 | { 18 | public Type type() { return Sys.ThisType; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/sys/dotnet/fan/sys/Transient.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Feb 10 Brian Frank Creation 7 | // 8 | 9 | namespace Fan.Sys 10 | { 11 | public sealed class Transient : FanObj, Facet 12 | { 13 | public static readonly Transient m_defVal = new Transient(); 14 | 15 | private Transient() {} 16 | 17 | public override Type @typeof() { return Sys.TransientType; } 18 | 19 | public override string toStr() { return @typeof().qname(); } 20 | } 21 | } -------------------------------------------------------------------------------- /src/sys/dotnet/fan/sys/Unsafe.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 8 Feb 09 Brian Frank Creation 7 | // 8 | 9 | using System; 10 | 11 | namespace Fan.Sys 12 | { 13 | /// 14 | /// Unsafe 15 | /// 16 | public class Unsafe : FanObj 17 | { 18 | public static Unsafe make(object val) { return new Unsafe(val); } 19 | 20 | public Unsafe(object val) { this.m_val = val; } 21 | 22 | public override Type @typeof() { return Sys.UnsafeType; } 23 | 24 | public object val() { return m_val; } 25 | 26 | public override bool isImmutable() { return true; } 27 | 28 | private object m_val; 29 | } 30 | } -------------------------------------------------------------------------------- /src/sys/dotnet/fan/sys/Void.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 14 Sep 06 Andy Frank Creation 7 | // 8 | 9 | using System; 10 | 11 | namespace Fan.Sys 12 | { 13 | /// 14 | /// Void is the absence of a type. 15 | /// 16 | public class Void 17 | { 18 | public Type type() { return Sys.VoidType; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/sys/dotnet/fanx/fcode/FDoc.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 18 Feb 08 Andy Frank Creation 7 | // 8 | 9 | using System.IO; 10 | using System.Text; 11 | using Fan.Sys; 12 | 13 | namespace Fanx.Fcode 14 | { 15 | public class FDoc 16 | { 17 | public static void read(Stream input, object top) 18 | { 19 | // TODO: this code needs to be updated to use new 20 | // apidoc format introduced in 1.0.60 Sept 2011 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/sys/dotnet/fanx/fcode/FField.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 27 Sep 06 Andy Frank Creation 7 | // 8 | 9 | using System; 10 | 11 | namespace Fanx.Fcode 12 | { 13 | /// 14 | /// FField is the read/write fcode representation of sys::Field. 15 | /// 16 | public class FField : FSlot 17 | { 18 | 19 | public FField read(FStore.Input input) 20 | { 21 | base.readCommon(input); 22 | m_type = input.u2(); 23 | base.readAttrs(input); 24 | return this; 25 | } 26 | 27 | public int m_type; // type qname index 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/sys/dotnet/fanx/fcode/FSlot.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 27 Sep 06 Andy Frank Creation 7 | // 8 | 9 | using System; 10 | 11 | namespace Fanx.Fcode 12 | { 13 | /// 14 | /// FSlot is the read/write fcode representation of sys::Slot. 15 | /// 16 | public class FSlot 17 | { 18 | public bool isStatic() { return (m_flags & FConst.Static) != 0; } 19 | 20 | protected void readCommon(FStore.Input input) 21 | { 22 | m_name = input.name(); 23 | m_flags = input.u4(); 24 | } 25 | 26 | protected void readAttrs(FStore.Input input) 27 | { 28 | m_attrs = FAttrs.read(input); 29 | } 30 | 31 | public string m_name; // simple slot name 32 | public int m_flags; // bitmask 33 | public FAttrs m_attrs; // meta-data 34 | } 35 | } -------------------------------------------------------------------------------- /src/sys/dotnet/fanx/serial/Literal.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Sep 07 Brian Frank Creation 7 | // 8 | 9 | namespace Fanx.Serial 10 | { 11 | /// 12 | /// Literal is implemented by sys objects which are encoded as literals. 13 | /// 14 | public interface Literal 15 | { 16 | 17 | void encode(ObjEncoder @out); 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/sys/dotnet/fanx/tools/Fanp.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 10 Jan 06 Andy Frank Creation 7 | // 8 | 9 | using System; 10 | using Fan.Sys; 11 | 12 | namespace Fanx.Tools 13 | { 14 | /// 15 | /// Fanp runtime for .NET. 16 | /// 17 | public class Fanp : Tool 18 | { 19 | 20 | ////////////////////////////////////////////////////////////////////////// 21 | // Run 22 | ////////////////////////////////////////////////////////////////////////// 23 | 24 | public static int run(string reserved) 25 | { 26 | sysInit(reserved); 27 | return new Fan().execute("compiler::Fanp.main", Tool.getArgv()); 28 | } 29 | 30 | } 31 | } -------------------------------------------------------------------------------- /src/sys/es/fan/FileStore.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 12 Sep 2013 Brian Frank Creation 7 | // 20 Apr 2023 Matthew Giannini Refactor for ES 8 | // 9 | 10 | /** 11 | * FileStore 12 | */ 13 | class FileStore extends Obj { 14 | constructor() { super(); } 15 | 16 | totalSpace() { return null; } 17 | availSpace() { return null; } 18 | freeSpace() { return null; } 19 | } 20 | 21 | /** 22 | * LocalFileStore 23 | */ 24 | class LocalFileStore extends FileStore { 25 | constructor() { super(); } 26 | typeof() { return LocalFileStore.type$; } 27 | totalSpace() { return null; } 28 | availSpace() { return null; } 29 | freeSpace() { return null; } 30 | } -------------------------------------------------------------------------------- /src/sys/es/fan/Process.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 13 Jul 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * Process 11 | */ 12 | class Process extends Obj { 13 | constructor() { super(); } 14 | 15 | static make(cmd=List.make(Str.type$), dir=null) { 16 | throw UnsupportedErr.make(); 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /src/sys/es/fan/Service.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 25 Apr 2023 Matthew Giannini Refactor for ES 8 | // 9 | 10 | /** 11 | * Service. 12 | */ 13 | class Service extends Obj { 14 | constructor() { super(); } 15 | 16 | } -------------------------------------------------------------------------------- /src/sys/es/fan/This.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 15 Mar 2010 Andy Frank Creation 7 | // 13 Apr 2023 Matthew Giannini Refactor for ES 8 | // 9 | 10 | /** 11 | * This. 12 | */ 13 | class This extends Obj { 14 | constructor() { super(); } 15 | 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/sys/es/fan/Unsafe.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Jun 2010 Brian Frank Creation 7 | // 25 Apr 2023 Matthew Giannini Refactor for ES 8 | // 9 | 10 | /** 11 | * Unsafe. 12 | */ 13 | class Unsafe extends Obj { 14 | 15 | constructor(val) { 16 | super(); 17 | this.#val = val; 18 | } 19 | 20 | #val; 21 | 22 | static make(val) { return new Unsafe(val); } 23 | 24 | 25 | 26 | val() { return this.#val; } 27 | 28 | } -------------------------------------------------------------------------------- /src/sys/es/fan/UriScheme.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 13 Jul 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * UriScheme 11 | */ 12 | class UriScheme extends Obj { 13 | constructor() { super(); } 14 | 15 | static find(scheme, checked=true) { 16 | if (checked) throw UnresolvedErr.make(`${scheme}`); 17 | return null; 18 | } 19 | 20 | get(uri, base) { 21 | throw UnresolvedErr.make(`uri=${uri} base=${base}`); 22 | } 23 | } -------------------------------------------------------------------------------- /src/sys/es/fan/Void.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 03 Dec 2009 Andy Frank Creation 7 | // 13 Apr 2010 Matthew Giannini Refactor for ES 8 | // 9 | 10 | /** 11 | * Void 12 | */ 13 | class Void extends Obj { 14 | constructor() { super(); } 15 | 16 | 17 | } 18 | // Void = function() {}; 19 | // Void.$typeof = function() { return Void.type$ } 20 | 21 | -------------------------------------------------------------------------------- /src/sys/fan/ArgErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Jun 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** ArgErr indicates an invalid argument was passed. 11 | ** 12 | const class ArgErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/fan/CancelledErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 26 Mar 09 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** CancelledErr indicates that an operation was cancelled 11 | ** before it completed normally. 12 | ** 13 | const class CancelledErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/sys/fan/CastErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Jun 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** CastErr is a runtime exception raised when invalid cast is performed. 11 | ** 12 | const class CastErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/fan/ConstErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 9 Apr 09 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** ConstErr indicates an attempt to set a const field after 11 | ** the object has been constructed. 12 | ** 13 | const class ConstErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/Endian.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 18 Dec 09 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Byte ordering. 11 | ** 12 | enum class Endian 13 | { 14 | ** Most significant byte first (network byte order) 15 | big, 16 | 17 | ** Least significant byte first 18 | little 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/sys/fan/Facet.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 03 Feb 10 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Facet is a mixin included into every facet type. 11 | ** 12 | ** See `docLang::Facets` for details. 13 | ** 14 | const mixin Facet 15 | { 16 | } 17 | -------------------------------------------------------------------------------- /src/sys/fan/FieldNotSetErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 23 Mar 10 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** FieldNotSetErr indicates a non-nullable field was not 11 | ** set by the constructor it-block. 12 | ** 13 | const class FieldNotSetErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/IOErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Jan 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** IOErr indicates an input/output error typically associated 11 | ** with a file system or socket. 12 | ** 13 | const class IOErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/IndexErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Jan 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** IndexErr indicates an attempt to access an invalid index in a List. 11 | ** 12 | const class IndexErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/fan/InterruptedErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 28 Jan 07 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** InterruptedErr indicates that a thread is interrupted from 11 | ** its normal execution. 12 | ** 13 | const class InterruptedErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/LogLevel.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 3 Jul 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** LogLevel provides a set of discrete levels used to customize logging. 11 | ** See `docLang::Logging` for details. 12 | ** 13 | enum class LogLevel 14 | { 15 | debug, 16 | info, 17 | warn, 18 | err, 19 | silent 20 | } -------------------------------------------------------------------------------- /src/sys/fan/NameErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 28 Dec 07 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** NameErr indicates an attempt to use an invalid name. 11 | ** See `Uri.isName` and `Uri.checkName`. 12 | ** 13 | const class NameErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/sys/fan/NotImmutableErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 2 Feb 07 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** NotImmutableErr indicates using a mutable Obj where an immutable Obj is 11 | ** required. See Obj.isImmutable for the definition of immutability. 12 | ** 13 | const class NotImmutableErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/NullErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Jan 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** NullErr indicates an attempt to dereference null. It is 11 | ** often raised when attempting to access an instance field or method 12 | ** on a null reference. It may also be thrown when a parameter is 13 | ** expecting a non-nullable argument and null is passed. 14 | ** 15 | const class NullErr : Err 16 | { 17 | 18 | ** 19 | ** Construct with specified error message and optional root cause. 20 | ** 21 | new make(Str msg := "", Err? cause := null) 22 | 23 | } -------------------------------------------------------------------------------- /src/sys/fan/ParseErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 18 Aug 07 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** ParseErr indicates an invalid string format which cannot be parsed. 11 | ** It is often used with 'fromStr' and 'fromLocale' methods. 12 | ** 13 | const class ParseErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/ReadonlyErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 7 Apr 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** ReadonlyErr indicates an attempt to modify a readonly instance. 11 | ** It is commonly used with List and Map. 12 | ** 13 | const class ReadonlyErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/This.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 25 Apr 08 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** This represents a method return type which is 11 | ** always [this type]`docLang::Methods#thisReturns`. 12 | ** 13 | const final class This 14 | { 15 | 16 | ** 17 | ** Private constructor. 18 | ** 19 | private new make() 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/TimeoutErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 27 Mar 09 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** TimeoutErr indicates that a blocking operation 11 | ** timed out before normal completion. 12 | ** 13 | const class TimeoutErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } -------------------------------------------------------------------------------- /src/sys/fan/UnknownFacetErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 14 May 09 Brian Frank Creation 7 | // 03 Feb 09 Brian Frank Rename from UnknownSymbolErr 8 | // 9 | 10 | ** 11 | ** UnknownFacetErr indicates an attempt to access an undefined facet. 12 | ** 13 | const class UnknownFacetErr : Err 14 | { 15 | 16 | ** 17 | ** Construct with specified error message and optional root cause. 18 | ** 19 | new make(Str msg := "", Err? cause := null) 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/sys/fan/UnknownKeyErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2012, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 09 Mar 12 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** UnknownKeyErr indicates an attempt to lookup a non-existent key. 11 | ** 12 | const class UnknownKeyErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/sys/fan/UnknownPodErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Jan 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** UnknownPodErr indicates an attempt to access a non-existent pod. 11 | ** 12 | const class UnknownPodErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/fan/UnknownServiceErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Dec 07 Brian Frank Creation 7 | // 26 Mar 09 Brian Frank Renamed from UnknownThreadErr 8 | // 9 | 10 | ** 11 | ** UnknownServiceErr indicates an attempt to lookup a service 12 | ** which is not installed. See `Service.find`. 13 | ** 14 | const class UnknownServiceErr : Err 15 | { 16 | 17 | ** 18 | ** Construct with specified error message and optional root cause. 19 | ** 20 | new make(Str msg := "", Err? cause := null) 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/sys/fan/UnknownSlotErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Jan 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** UnknownSlotErr indicates an attempt to access a non-existent slot. 11 | ** 12 | const class UnknownSlotErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/fan/UnknownTypeErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Jan 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** UnknownTypeErr indicates an attempt to access a non-existent type. 11 | ** 12 | const class UnknownTypeErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/fan/UnresolvedErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 24 Nov 07 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** UnresolvedErr indicates the failure to resolve a Uri to a resource. 11 | ** 12 | const class UnresolvedErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/fan/Unsafe.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 8 Feb 09 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Unsafe wraps a mutable object as an immutable reference. 11 | ** 12 | const final class Unsafe 13 | { 14 | 15 | ** 16 | ** Wrap specified object. 17 | ** 18 | new make(Obj? val) 19 | 20 | ** 21 | ** Get the wrapped object. 22 | ** 23 | Obj? val() 24 | 25 | } -------------------------------------------------------------------------------- /src/sys/fan/UnsupportedErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 Jan 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** UnsupportedErr indicates a feature which isn't supported. 11 | ** 12 | const class UnsupportedErr : Err 13 | { 14 | 15 | ** 16 | ** Construct with specified error message and optional root cause. 17 | ** 18 | new make(Str msg := "", Err? cause := null) 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/fan/Void.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 9 Jan 06 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Void is used to represent the absence of a return value in a Method. 11 | ** 12 | const final class Void 13 | { 14 | 15 | ** 16 | ** Private constructor. 17 | ** 18 | private new make() 19 | 20 | } -------------------------------------------------------------------------------- /src/sys/java/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fansubstitute 2 | // 3 | // Copyright (c) 2006, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 12 Nov 06 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: sys.jar 14 | ** 15 | ** Note: this script builds the Java runtime for Fantom's sys pod. 16 | ** 17 | class Build : BuildJava 18 | { 19 | 20 | new make() 21 | { 22 | jar = devHomeDir.uri + `lib/java/sys.jar` 23 | mainClass = "fanx.tools.Fan" 24 | packages = ["fan.sys", 25 | "fanx.emit", 26 | "fanx.fcode", 27 | "fanx.interop", 28 | "fanx.serial", 29 | "fanx.test", 30 | "fanx.tools", 31 | "fanx.util"] 32 | } 33 | 34 | } 35 | 36 | -------------------------------------------------------------------------------- /src/sys/java/fan/sys/Deprecated.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Feb 10 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | import fanx.serial.*; 11 | 12 | /** 13 | * Deprecated facet 14 | */ 15 | public final class Deprecated extends FanObj implements Facet 16 | { 17 | public static Deprecated make() { return make(null); } 18 | public static Deprecated make(Func func) 19 | { 20 | Deprecated self = new Deprecated(); 21 | if (func != null) 22 | { 23 | func.enterCtor(self); 24 | func.call(self); 25 | func.exitCtor(); 26 | } 27 | return self; 28 | } 29 | 30 | public Type typeof() { return Sys.DeprecatedType; } 31 | 32 | public String toStr() { return ObjEncoder.encode(this); } 33 | 34 | public String msg = ""; 35 | 36 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/Facet.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 03 Feb 10 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | /** 11 | * Facet 12 | */ 13 | public interface Facet 14 | { 15 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/FacetMeta.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 10 Nov 10 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | import fanx.serial.*; 11 | 12 | /** 13 | * FacetMeta facet 14 | */ 15 | public final class FacetMeta extends FanObj implements Facet 16 | { 17 | public static FacetMeta make() { return make(null); } 18 | public static FacetMeta make(Func func) 19 | { 20 | FacetMeta self = new FacetMeta(); 21 | if (func != null) 22 | { 23 | func.enterCtor(self); 24 | func.call(self); 25 | func.exitCtor(); 26 | } 27 | return self; 28 | } 29 | 30 | public Type typeof() { return Sys.FacetMetaType; } 31 | 32 | public String toStr() { return ObjEncoder.encode(this); } 33 | 34 | public boolean inherited; 35 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/FileStore.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 12 Sep 13 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | import java.io.*; 11 | 12 | /** 13 | * FileStore represents the storage pool, device, partition, or volume 14 | ** used to store files. 15 | */ 16 | public abstract class FileStore 17 | extends FanObj 18 | { 19 | 20 | protected static void make$() {} 21 | 22 | protected static void makeNew$(FileStore self) 23 | { 24 | } 25 | 26 | public abstract Long totalSpace(); 27 | 28 | public abstract Long availSpace(); 29 | 30 | public abstract Long freeSpace(); 31 | 32 | public Type typeof() { return Sys.FileStoreType; } 33 | 34 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/Js.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Feb 10 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | /** 11 | * Js facet 12 | */ 13 | public final class Js extends FanObj implements Facet 14 | { 15 | public static final Js defVal = new Js(); 16 | 17 | private Js() {} 18 | 19 | public Type typeof() { return Sys.JsType; } 20 | 21 | public String toStr() { return typeof().qname(); } 22 | 23 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/NoDoc.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Feb 10 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | /** 11 | * NoDoc facet 12 | */ 13 | public final class NoDoc extends FanObj implements Facet 14 | { 15 | public static final NoDoc defVal = new NoDoc(); 16 | 17 | private NoDoc() {} 18 | 19 | public Type typeof() { return Sys.NoDocType; } 20 | 21 | public String toStr() { return typeof().qname(); } 22 | 23 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/Operator.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 8 Nov 10 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | /** 11 | * Operator facet 12 | */ 13 | public final class Operator extends FanObj implements Facet 14 | { 15 | public static final Operator defVal = new Operator(); 16 | 17 | private Operator() {} 18 | 19 | public Type typeof() { return Sys.OperatorType; } 20 | 21 | public String toStr() { return typeof().qname(); } 22 | 23 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/This.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 25 Apr 08 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | /** 11 | * This represents a method return type which is always "this type". 12 | */ 13 | public class This 14 | { 15 | 16 | public Type typeof() { return Sys.ThisType; } 17 | 18 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/Transient.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Feb 10 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | /** 11 | * Transient facet 12 | */ 13 | public final class Transient extends FanObj implements Facet 14 | { 15 | public static final Transient defVal = new Transient(); 16 | 17 | private Transient() {} 18 | 19 | public Type typeof() { return Sys.TransientType; } 20 | 21 | public String toStr() { return typeof().qname(); } 22 | 23 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/Unsafe.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 8 Feb 09 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | /** 11 | * Unsafe 12 | */ 13 | public final class Unsafe 14 | extends FanObj 15 | { 16 | 17 | public static Unsafe make(Object val) { return new Unsafe(val); } 18 | 19 | public Unsafe(Object val) { this.val = val; } 20 | 21 | public Type typeof() { return Sys.UnsafeType; } 22 | 23 | public Object val() { return val; } 24 | 25 | public boolean isImmutable() { return true; } 26 | 27 | public String toStr() { return "Unsafe(" + val + ")"; } 28 | 29 | private Object val; 30 | 31 | } -------------------------------------------------------------------------------- /src/sys/java/fan/sys/Void.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 4 Dec 05 Brian Frank Creation 7 | // 8 | package fan.sys; 9 | 10 | /** 11 | * Void is the absence of a type. 12 | */ 13 | public class Void 14 | { 15 | 16 | public Type typeof() { return Sys.VoidType; } 17 | 18 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/fcode/FField.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 26 Dec 05 Brian Frank Creation 7 | // 8 | package fanx.fcode; 9 | 10 | import java.io.*; 11 | import java.util.*; 12 | 13 | /** 14 | * FField is the fcode representation of sys::Field. 15 | */ 16 | public class FField 17 | extends FSlot 18 | { 19 | 20 | public FField read(FStore.Input in) throws IOException 21 | { 22 | super.readCommon(in); 23 | type = in.u2(); 24 | super.readAttrs(in); 25 | return this; 26 | } 27 | 28 | public int type; // type qname index 29 | 30 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/fcode/FSlot.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2006, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 26 Dec 05 Brian Frank Creation 7 | // 8 | package fanx.fcode; 9 | 10 | import java.io.*; 11 | import java.util.*; 12 | 13 | /** 14 | * FSlot is the fcode representation of sys::Slot. 15 | */ 16 | public class FSlot 17 | implements FConst 18 | { 19 | 20 | public final boolean isStatic() { return (flags & FConst.Static) != 0; } 21 | 22 | protected void readCommon(FStore.Input in) throws IOException 23 | { 24 | name = in.name(); 25 | flags = in.u4(); 26 | } 27 | 28 | protected void readAttrs(FStore.Input in) throws IOException 29 | { 30 | attrs = FAttrs.read(in); 31 | } 32 | 33 | public String name; // simple slot name 34 | public int flags; // bitmask 35 | public FAttrs attrs; // meta-data 36 | 37 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/interop/BooleanArray.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Dec 08 Brian Frank Creation 7 | // 8 | package fanx.interop; 9 | 10 | /** 11 | * BooleanArray dummy class for boolean[] 12 | */ 13 | public class BooleanArray 14 | { 15 | public static BooleanArray make(int size) { return null; } 16 | public boolean get(int index) { return false; } 17 | public void set(int index, boolean val) {} 18 | public int size() { return 0; } 19 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/interop/ByteArray.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Dec 08 Brian Frank Creation 7 | // 8 | package fanx.interop; 9 | 10 | /** 11 | * ByteArray dummy class for byte[] 12 | */ 13 | public class ByteArray 14 | { 15 | public static ByteArray make(int size) { return null; } 16 | public byte get(int index) { return 0; } 17 | public void set(int index, byte val) {} 18 | public int size() { return 0; } 19 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/interop/CharArray.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Dec 08 Brian Frank Creation 7 | // 8 | package fanx.interop; 9 | 10 | /** 11 | * CharArray dummy class for char[] 12 | */ 13 | public class CharArray 14 | { 15 | public static CharArray make(int size) { return null; } 16 | public char get(int index) { return 0; } 17 | public void set(int index, char val) {} 18 | public int size() { return 0; } 19 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/interop/DoubleArray.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Dec 08 Brian Frank Creation 7 | // 8 | package fanx.interop; 9 | 10 | /** 11 | * DoubleArray dummy class for double[] 12 | */ 13 | public class DoubleArray 14 | { 15 | public static DoubleArray make(int size) { return null; } 16 | public double get(int index) { return 0; } 17 | public void set(int index, double val) {} 18 | public int size() { return 0; } 19 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/interop/FloatArray.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Dec 08 Brian Frank Creation 7 | // 8 | package fanx.interop; 9 | 10 | /** 11 | * FloatArray dummy class for float[] 12 | */ 13 | public class FloatArray 14 | { 15 | public static FloatArray make(int size) { return null; } 16 | public float get(int index) { return 0; } 17 | public void set(int index, float val) {} 18 | public int size() { return 0; } 19 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/interop/IntArray.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Dec 08 Brian Frank Creation 7 | // 8 | package fanx.interop; 9 | 10 | /** 11 | * IntArray dummy class for int[] 12 | */ 13 | public class IntArray 14 | { 15 | public static IntArray make(int size) { return null; } 16 | public int get(int index) { return 0; } 17 | public void set(int index, int val) {} 18 | public int size() { return 0; } 19 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/interop/LongArray.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Dec 08 Brian Frank Creation 7 | // 8 | package fanx.interop; 9 | 10 | /** 11 | * LongArray dummy class for long[] 12 | */ 13 | public class LongArray 14 | { 15 | public static LongArray make(int size) { return null; } 16 | public long get(int index) { return 0; } 17 | public void set(int index, long val) {} 18 | public int size() { return 0; } 19 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/interop/ShortArray.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 04 Dec 08 Brian Frank Creation 7 | // 8 | package fanx.interop; 9 | 10 | /** 11 | * ShortArray dummy class for short[] 12 | */ 13 | public class ShortArray 14 | { 15 | public static ShortArray make(int size) { return null; } 16 | public short get(int index) { return 0; } 17 | public void set(int index, short val) {} 18 | public int size() { return 0; } 19 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/serial/Literal.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2007, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 20 Aug 07 Brian Frank Creation 7 | // 8 | package fanx.serial; 9 | 10 | /** 11 | * Literal is implemented by sys objects which are encoded as literals. 12 | */ 13 | public interface Literal 14 | { 15 | 16 | public void encode(ObjEncoder out); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/sys/java/fanx/test/TestAnnoA.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 10 Sep 10 Brian Frank Creation 7 | // 8 | package fanx.test; 9 | 10 | import java.lang.annotation.*; 11 | 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface TestAnnoA 14 | { 15 | } -------------------------------------------------------------------------------- /src/sys/java/fanx/test/TestAnnoB.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 10 Sep 10 Brian Frank Creation 7 | // 8 | package fanx.test; 9 | 10 | import java.lang.annotation.*; 11 | 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface TestAnnoB 14 | { 15 | String value(); 16 | } -------------------------------------------------------------------------------- /src/sys/js/fan/Endian.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 27 Feb 09 Andy Frank Creation 7 | // 20 May 09 Andy Frank Refactor to new OO model 8 | // 9 | 10 | /** 11 | * Endian 12 | */ 13 | fan.sys.Endian = fan.sys.Obj.$extend(fan.sys.Enum); 14 | 15 | fan.sys.Endian.prototype.$ctor = function(ordinal, name) 16 | { 17 | fan.sys.Enum.make$(this, ordinal, name); 18 | } 19 | 20 | fan.sys.Endian.fromStr = function(name, checked) 21 | { 22 | if (checked === undefined) checked = true; 23 | return fan.sys.Enum.doFromStr(fan.sys.Endian.$type, name, checked); 24 | } 25 | 26 | fan.sys.Endian.prototype.$typeof = function() 27 | { 28 | return fan.sys.Endian.$type; 29 | } 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/sys/js/fan/LocalFileStore.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 12 Sep 13 Brian Frank Creation 7 | // 8 | 9 | /** 10 | * LocalFileStore 11 | */ 12 | 13 | fan.sys.LocalFileStore = fan.sys.Obj.$extend(fan.sys.FileStore); 14 | fan.sys.LocalFileStore.prototype.$ctor = function() {} 15 | fan.sys.LocalFileStore.prototype.$typeof = function() { return fan.sys.LocalFileStore.$type; } 16 | 17 | -------------------------------------------------------------------------------- /src/sys/js/fan/Service.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * Service. 11 | */ 12 | fan.sys.Service = fan.sys.Obj.$extend(fan.sys.Obj); 13 | 14 | fan.sys.Service.prototype.$ctor = function() {} 15 | fan.sys.Service.prototype.$typeof = function() { return fan.sys.Service.$type; } -------------------------------------------------------------------------------- /src/sys/js/fan/This.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 15 Mar 10 Andy Frank Creation 7 | // 8 | 9 | /** 10 | * This. 11 | */ 12 | fan.sys.This = fan.sys.Obj.$extend(fan.sys.Obj); 13 | 14 | fan.sys.This.prototype.$ctor = function() {} 15 | fan.sys.This.prototype.$typeof = function() { return fan.sys.This.$type; } 16 | 17 | -------------------------------------------------------------------------------- /src/sys/js/fan/Void.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2009, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 3 Dec 09 Andy Frank Creation 7 | // 8 | 9 | /** 10 | * Void 11 | */ 12 | fan.sys.Void = function() {}; 13 | fan.sys.Void.prototype.$typeof = function() { return fan.sys.Void.$type; } 14 | 15 | -------------------------------------------------------------------------------- /src/sys/js/fan/Zip.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 21 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * Zip. 11 | */ 12 | fan.sys.Zip = fan.sys.Obj.$extend(fan.sys.Obj); 13 | 14 | fan.sys.Zip.prototype.$ctor = function() {} 15 | fan.sys.Zip.prototype.$typeof = function() { return fan.util.Zip.$type; } -------------------------------------------------------------------------------- /src/sys/locale/ar.props: -------------------------------------------------------------------------------- 1 | dateTime=DD MMM, YYYY zzz kk:mm:ss aa 2 | date=DD MMM, YYYY 3 | time=kk:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=يناير 9 | febFull=فبراير 10 | marFull=مارس 11 | aprFull=أبريل 12 | mayFull=مايو 13 | junFull=يونيو 14 | julFull=يوليو 15 | augFull=أغسطس 16 | sepFull=سبتمبر 17 | octFull=أكتوبر 18 | novFull=نوفمبر 19 | decFull=ديسمبر 20 | janAbbr=ينا 21 | febAbbr=فبر 22 | marAbbr=مار 23 | aprAbbr=أبر 24 | mayAbbr=ماي 25 | junAbbr=يون 26 | julAbbr=يول 27 | augAbbr=أغس 28 | sepAbbr=سبت 29 | octAbbr=أكت 30 | novAbbr=نوف 31 | decAbbr=ديس 32 | sunFull=الأحد 33 | monFull=الاثنين 34 | tueFull=الثلاثاء 35 | wedFull=الأربعاء 36 | thuFull=الخميس 37 | friFull=الجمعة 38 | satFull=السبت 39 | sunAbbr=ح 40 | monAbbr=ن 41 | tueAbbr=ث 42 | wedAbbr=ر 43 | thuAbbr=خ 44 | friAbbr=ج 45 | satAbbr=س -------------------------------------------------------------------------------- /src/sys/locale/bg.props: -------------------------------------------------------------------------------- 1 | dateTime=D.MM.YYYY (WWW) h,mm,ss zzz 2 | date=D.MM.YYYY 3 | time=h,mm,ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=януари 11 | febFull=февруари 12 | marFull=март 13 | aprFull=април 14 | mayFull=май 15 | junFull=юни 16 | julFull=юли 17 | augFull=август 18 | sepFull=септември 19 | octFull=октомври 20 | novFull=ноември 21 | decFull=декември 22 | janAbbr=яну 23 | febAbbr=фев 24 | marAbbr=мар 25 | aprAbbr=апр 26 | mayAbbr=май 27 | junAbbr=юни 28 | julAbbr=юли 29 | augAbbr=авг 30 | sepAbbr=сеп 31 | octAbbr=окт 32 | novAbbr=ное 33 | decAbbr=дек 34 | sunFull=неделя 35 | monFull=понеделник 36 | tueFull=вторник 37 | wedFull=сряда 38 | thuFull=четвъртък 39 | friFull=петък 40 | satFull=събота 41 | sunAbbr=нд 42 | monAbbr=пн 43 | tueAbbr=вт 44 | wedAbbr=ср 45 | thuAbbr=чт 46 | friAbbr=пт 47 | satAbbr=сб 48 | -------------------------------------------------------------------------------- /src/sys/locale/cs.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW D. MMMM YYYY, hh:mm:ss zzz 2 | date=D.M.YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=leden 11 | febFull=únor 12 | marFull=březen 13 | aprFull=duben 14 | mayFull=květen 15 | junFull=červen 16 | julFull=červenec 17 | augFull=srpen 18 | sepFull=září 19 | octFull=říjen 20 | novFull=listopad 21 | decFull=prosinec 22 | janAbbr=led 23 | febAbbr=úno 24 | marAbbr=bře 25 | aprAbbr=dub 26 | mayAbbr=kvě 27 | junAbbr=čen 28 | julAbbr=čec 29 | augAbbr=srp 30 | sepAbbr=zář 31 | octAbbr=říj 32 | novAbbr=lis 33 | decAbbr=pro 34 | sunFull=Neděle 35 | monFull=Pondělí 36 | tueFull=Úterý 37 | wedFull=Středa 38 | thuFull=Čtvrtek 39 | friFull=Pátek 40 | satFull=Sobota 41 | sunAbbr=Ne 42 | monAbbr=Po 43 | tueAbbr=Út 44 | wedAbbr=St 45 | thuAbbr=Čt 46 | friAbbr=Pá 47 | satAbbr=So 48 | -------------------------------------------------------------------------------- /src/sys/locale/da.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD-MM-YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=januar 11 | febFull=februar 12 | marFull=marts 13 | aprFull=april 14 | mayFull=maj 15 | junFull=juni 16 | julFull=juli 17 | augFull=august 18 | sepFull=september 19 | octFull=oktober 20 | novFull=november 21 | decFull=december 22 | janAbbr=jan 23 | febAbbr=feb 24 | marAbbr=mar 25 | aprAbbr=apr 26 | mayAbbr=maj 27 | junAbbr=jun 28 | julAbbr=jul 29 | augAbbr=aug 30 | sepAbbr=sep 31 | octAbbr=okt 32 | novAbbr=nov 33 | decAbbr=dec 34 | sunFull=søndag 35 | monFull=mandag 36 | tueFull=tirsdag 37 | wedFull=onsdag 38 | thuFull=torsdag 39 | friFull=fredag 40 | satFull=lørdag 41 | sunAbbr=søn 42 | monAbbr=man 43 | tueAbbr=tir 44 | wedAbbr=ons 45 | thuAbbr=tor 46 | friAbbr=fre 47 | satAbbr=lør 48 | -------------------------------------------------------------------------------- /src/sys/locale/de.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=Januar 11 | febFull=Februar 12 | marFull=März 13 | aprFull=April 14 | mayFull=Mai 15 | junFull=Juni 16 | julFull=Juli 17 | augFull=August 18 | sepFull=September 19 | octFull=Oktober 20 | novFull=November 21 | decFull=Dezember 22 | janAbbr=Jan 23 | febAbbr=Feb 24 | marAbbr=Mär 25 | aprAbbr=Apr 26 | mayAbbr=Mai 27 | junAbbr=Jun 28 | julAbbr=Jul 29 | augAbbr=Aug 30 | sepAbbr=Sep 31 | octAbbr=Okt 32 | novAbbr=Nov 33 | decAbbr=Dez 34 | sunFull=Sonntag 35 | monFull=Montag 36 | tueFull=Dienstag 37 | wedFull=Mittwoch 38 | thuFull=Donnerstag 39 | friFull=Freitag 40 | satFull=Samstag 41 | sunAbbr=So 42 | monAbbr=Mo 43 | tueAbbr=Di 44 | wedAbbr=Mi 45 | thuAbbr=Do 46 | friAbbr=Fr 47 | satAbbr=Sa 48 | -------------------------------------------------------------------------------- /src/sys/locale/en-AU.props: -------------------------------------------------------------------------------- 1 | // 2 | // sys::en-AU.props English Australia 3 | // 4 | 5 | weekdayStart=mon -------------------------------------------------------------------------------- /src/sys/locale/en-GB.props: -------------------------------------------------------------------------------- 1 | // 2 | // sys::en-GB.props English Great Britain / UK 3 | // 4 | 5 | weekdayStart=mon -------------------------------------------------------------------------------- /src/sys/locale/en-IE.props: -------------------------------------------------------------------------------- 1 | // 2 | // sys::en-IE.props English Ireland 3 | // 4 | 5 | weekdayStart=mon -------------------------------------------------------------------------------- /src/sys/locale/en-NZ.props: -------------------------------------------------------------------------------- 1 | // 2 | // sys::en-NZ.props English New Zealand 3 | // 4 | 5 | weekdayStart=mon -------------------------------------------------------------------------------- /src/sys/locale/en-US.props: -------------------------------------------------------------------------------- 1 | // 2 | // sys::en-US.props 3 | // 4 | 5 | ////////////////////////////////////////////////////////////////////////// 6 | // DateTime (use PM) 7 | ////////////////////////////////////////////////////////////////////////// 8 | 9 | // default toLocale patterns 10 | dateTime=D-MMM-YYYY WWW k:mm:ssAA zzz 11 | time=k:mmAA -------------------------------------------------------------------------------- /src/sys/locale/es.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD/MM/YY 3 | time=hh:mm:ss 4 | float=#.0## 5 | decimal=#.0## 6 | int=# 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=mon 10 | janFull=enero 11 | febFull=febrero 12 | marFull=marzo 13 | aprFull=abril 14 | mayFull=mayo 15 | junFull=junio 16 | julFull=julio 17 | augFull=agosto 18 | sepFull=septiembre 19 | octFull=octubre 20 | novFull=noviembre 21 | decFull=diciembre 22 | janAbbr=ene 23 | febAbbr=feb 24 | marAbbr=mar 25 | aprAbbr=abr 26 | mayAbbr=may 27 | junAbbr=jun 28 | julAbbr=jul 29 | augAbbr=ago 30 | sepAbbr=sep 31 | octAbbr=oct 32 | novAbbr=nov 33 | decAbbr=dic 34 | sunFull=domingo 35 | monFull=lunes 36 | tueFull=martes 37 | wedFull=miércoles 38 | thuFull=jueves 39 | friFull=viernes 40 | satFull=sábado 41 | sunAbbr=dom 42 | monAbbr=lun 43 | tueAbbr=mar 44 | wedAbbr=mié 45 | thuAbbr=jue 46 | friAbbr=vie 47 | satAbbr=sáb -------------------------------------------------------------------------------- /src/sys/locale/fa.props: -------------------------------------------------------------------------------- 1 | dateTime=‫WWWW D MMMM YY، hh:mm:ss‬ zzz 2 | date=YY/MM/DD 3 | time=hh:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=ژانویه 9 | febFull=فوریه 10 | marFull=مارس 11 | aprFull=آوریل 12 | mayFull=مه 13 | junFull=ژوئن 14 | julFull=ژوئیه 15 | augFull=اوت 16 | sepFull=سپتامبر 17 | octFull=اكتبر 18 | novFull=نوامبر 19 | decFull=دسامبر 20 | janAbbr=ژانویه 21 | febAbbr=فوریه 22 | marAbbr=مارس 23 | aprAbbr=آوریل 24 | mayAbbr=مه 25 | junAbbr=ژوئن 26 | julAbbr=ژوئیه 27 | augAbbr=اوت 28 | sepAbbr=سپتامبر 29 | octAbbr=اكتبر 30 | novAbbr=نوامبر 31 | decAbbr=دسامبر 32 | sunFull=یکشنبه 33 | monFull=دوشنبه 34 | tueFull=سه‌شنبه 35 | wedFull=چهارشنبه 36 | thuFull=پنجشنبه 37 | friFull=جمعه 38 | satFull=شنبه 39 | sunAbbr=یکشنبه 40 | monAbbr=دوشنبه 41 | tueAbbr=سه‌شنبه 42 | wedAbbr=چهارشنبه 43 | thuAbbr=پنجشنبه 44 | friAbbr=جمعه 45 | satAbbr=شنبه -------------------------------------------------------------------------------- /src/sys/locale/fr.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD/MM/YYYY 3 | time=hh:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=janvier 11 | febFull=février 12 | marFull=mars 13 | aprFull=avril 14 | mayFull=mai 15 | junFull=juin 16 | julFull=juillet 17 | augFull=août 18 | sepFull=septembre 19 | octFull=octobre 20 | novFull=novembre 21 | decFull=décembre 22 | janAbbr=janv. 23 | febAbbr=févr. 24 | marAbbr=mars 25 | aprAbbr=avril 26 | mayAbbr=mai 27 | junAbbr=juin 28 | julAbbr=juil. 29 | augAbbr=août 30 | sepAbbr=sept. 31 | octAbbr=oct. 32 | novAbbr=nov. 33 | decAbbr=déc. 34 | sunFull=dimanche 35 | monFull=lundi 36 | tueFull=mardi 37 | wedFull=mercredi 38 | thuFull=jeudi 39 | friFull=vendredi 40 | satFull=samedi 41 | sunAbbr=dim. 42 | monAbbr=lun. 43 | tueAbbr=mar. 44 | wedAbbr=mer. 45 | thuAbbr=jeu. 46 | friAbbr=ven. 47 | satAbbr=sam. 48 | -------------------------------------------------------------------------------- /src/sys/locale/gu.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMM YYYY kk:mm:ss aa zzz 2 | date=WWWW DD MMM YYYY 3 | time=kk:mm:ss 4 | weekdayStart=sun 5 | janFull=જાન્યુઆરી 6 | febFull=ફેબ્રુઆરી 7 | marFull=માર્ચ 8 | aprFull=એપ્રિલ 9 | mayFull=મે 10 | junFull=જુન 11 | julFull=જુલાઇ 12 | augFull=ઓગસ્ટ 13 | sepFull=સપ્ટેમ્બર 14 | octFull=ઓક્ટોબર 15 | novFull=નવેમ્બર 16 | decFull=ડિસેમ્બર 17 | janAbbr=જાન 18 | febAbbr=ફેબ 19 | marAbbr=માર 20 | aprAbbr=એપ્ર 21 | mayAbbr=મે 22 | junAbbr=જુન 23 | julAbbr=જુલ 24 | augAbbr=ઓગ 25 | sepAbbr=સપ્ટ 26 | octAbbr=ઓક્ટ 27 | novAbbr=નોવ 28 | decAbbr=ડિસ 29 | sunFull=રવિવાર 30 | monFull=સોમવાર 31 | tueFull=મંગળવાર 32 | wedFull=બુધવાર 33 | thuFull=ગુરુવાર 34 | friFull=શુક્રવાર 35 | satFull=શનિવાર 36 | sunAbbr=રવિ 37 | monAbbr=સોમ 38 | tueAbbr=મંગળ 39 | wedAbbr=બુધ 40 | thuAbbr=ગુરુ 41 | friAbbr=શુક્ર 42 | satAbbr=શનિ -------------------------------------------------------------------------------- /src/sys/locale/he.props: -------------------------------------------------------------------------------- 1 | dateTime=zzz hh:mm:ss YYYY MMM DD WWW 2 | date=DD/MM/YY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | weekdayStart=sun 8 | janFull=ינואר 9 | febFull=פברואר 10 | marFull=מרץ 11 | aprFull=אפריל 12 | mayFull=מאי 13 | junFull=יוני 14 | julFull=יולי 15 | augFull=אוגוסט 16 | sepFull=ספטמבר 17 | octFull=אוקטובר 18 | novFull=נובמבר 19 | decFull=דצמבר 20 | janAbbr=ינו 21 | febAbbr=פבר 22 | marAbbr=מרץ 23 | aprAbbr=אפר 24 | mayAbbr=מאי 25 | junAbbr=יונ 26 | julAbbr=יול 27 | augAbbr=אוג 28 | sepAbbr=ספט 29 | octAbbr=אוק 30 | novAbbr=נוב 31 | decAbbr=דצמ 32 | sunFull=ראשון 33 | monFull=שני 34 | tueFull=שלישי 35 | wedFull=רביעי 36 | thuFull=חמישי 37 | friFull=שישי 38 | satFull=שבת 39 | sunAbbr=א' 40 | monAbbr=ב' 41 | tueAbbr=ג' 42 | wedAbbr=ד' 43 | thuAbbr=ה' 44 | friAbbr=ו' 45 | satAbbr=ש' 46 | -------------------------------------------------------------------------------- /src/sys/locale/hi.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMM YYYY kk:mm:ss aa zzz 2 | date=WWWW DD MMM YYYY 3 | time=kk:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=जनवरी 9 | febFull=फ़रवरी 10 | marFull=मार्च 11 | aprFull=अप्रेल 12 | mayFull=मई 13 | junFull=जून 14 | julFull=जुलाई 15 | augFull=अगस्त 16 | sepFull=सितम्बर 17 | octFull=अक्टूबर 18 | novFull=नवम्बर 19 | decFull=दिसम्बर 20 | janAbbr=जनवरी 21 | febAbbr=फ़रवरी 22 | marAbbr=मार्च 23 | aprAbbr=अप्रेल 24 | mayAbbr=मई 25 | junAbbr=जून 26 | julAbbr=जुलाई 27 | augAbbr=अगस्त 28 | sepAbbr=सितम्बर 29 | octAbbr=अक्टूबर 30 | novAbbr=नवम्बर 31 | decAbbr=दिसम्बर 32 | sunFull=रविवार 33 | monFull=सोमवार 34 | tueFull=मंगलवार 35 | wedFull=बुधवार 36 | thuFull=गुरुवार 37 | friFull=शुक्रवार 38 | satFull=शनिवार 39 | sunAbbr=रवि 40 | monAbbr=सोम 41 | tueAbbr=मंगल 42 | wedAbbr=बुध 43 | thuAbbr=गुरु 44 | friAbbr=शुक्र 45 | satAbbr=शनि -------------------------------------------------------------------------------- /src/sys/locale/hr.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#.0## 5 | decimal=#.0## 6 | int=# 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=Siječanj 11 | febFull=Veljača 12 | marFull=Ožujak 13 | aprFull=Travanj 14 | mayFull=Svibanj 15 | junFull=Lipanj 16 | julFull=Srpanj 17 | augFull=Kolovoz 18 | sepFull=Rujan 19 | octFull=Listopad 20 | novFull=Studeni 21 | decFull=Prosinac 22 | janAbbr=Sij 23 | febAbbr=Vel 24 | marAbbr=Ožu 25 | aprAbbr=Tra 26 | mayAbbr=Svi 27 | junAbbr=Lip 28 | julAbbr=Srp 29 | augAbbr=Kol 30 | sepAbbr=Ruj 31 | octAbbr=Lis 32 | novAbbr=Stu 33 | decAbbr=Pro 34 | sunFull=Nedjelja 35 | monFull=Ponedjeljak 36 | tueFull=Utorak 37 | wedFull=Srijeda 38 | thuFull=Četvrtak 39 | friFull=Petak 40 | satFull=Subota 41 | sunAbbr=Ned 42 | monAbbr=Pon 43 | tueAbbr=Uto 44 | wedAbbr=Sri 45 | thuAbbr=Čet 46 | friAbbr=Pet 47 | satAbbr=Sub -------------------------------------------------------------------------------- /src/sys/locale/hu.props: -------------------------------------------------------------------------------- 1 | dateTime=YYYY. MMM. D., WWWW, hh.mm.ss zzz 2 | date=YYYY-MM-DD 3 | time=hh.mm.ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=január 11 | febFull=február 12 | marFull=március 13 | aprFull=április 14 | mayFull=május 15 | junFull=június 16 | julFull=július 17 | augFull=augusztus 18 | sepFull=szeptember 19 | octFull=október 20 | novFull=november 21 | decFull=december 22 | janAbbr=jan 23 | febAbbr=febr 24 | marAbbr=márc 25 | aprAbbr=ápr 26 | mayAbbr=máj 27 | junAbbr=jún 28 | julAbbr=júl 29 | augAbbr=aug 30 | sepAbbr=szept 31 | octAbbr=okt 32 | novAbbr=nov 33 | decAbbr=dec 34 | sunFull=vasárnap 35 | monFull=hétfő 36 | tueFull=kedd 37 | wedFull=szerda 38 | thuFull=csütörtök 39 | friFull=péntek 40 | satFull=szombat 41 | sunAbbr=v 42 | monAbbr=h 43 | tueAbbr=k 44 | wedAbbr=sze 45 | thuAbbr=cs 46 | friAbbr=p 47 | satAbbr=szo 48 | -------------------------------------------------------------------------------- /src/sys/locale/id.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY "" zzz 2 | date=DD/MM/YY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=Januari 11 | febFull=Pebruari 12 | marFull=Maret 13 | aprFull=April 14 | mayFull=Mei 15 | junFull=Juni 16 | julFull=Juli 17 | augFull=Agustus 18 | sepFull=September 19 | octFull=Oktober 20 | novFull=November 21 | decFull=Desember 22 | janAbbr=Jan 23 | febAbbr=Peb 24 | marAbbr=Mar 25 | aprAbbr=Apr 26 | mayAbbr=Mei 27 | junAbbr=Jun 28 | julAbbr=Jul 29 | augAbbr=Agu 30 | sepAbbr=Sep 31 | octAbbr=Okt 32 | novAbbr=Nov 33 | decAbbr=Des 34 | sunFull=Minggu 35 | monFull=Senin 36 | tueFull=Selasa 37 | wedFull=Rabu 38 | thuFull=Kamis 39 | friFull=Jumat 40 | satFull=Sabtu 41 | sunAbbr=Min 42 | monAbbr=Sen 43 | tueAbbr=Sel 44 | wedAbbr=Rab 45 | thuAbbr=Kam 46 | friAbbr=Jum 47 | satAbbr=Sab 48 | -------------------------------------------------------------------------------- /src/sys/locale/it.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD/MM/YYYY 3 | time=hh:mm:ss 4 | float=#.0## 5 | decimal=#.0## 6 | int=# 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=gennaio 11 | febFull=febbraio 12 | marFull=marzo 13 | aprFull=aprile 14 | mayFull=maggio 15 | junFull=giugno 16 | julFull=luglio 17 | augFull=agosto 18 | sepFull=settembre 19 | octFull=ottobre 20 | novFull=novembre 21 | decFull=dicembre 22 | janAbbr=gen 23 | febAbbr=feb 24 | marAbbr=mar 25 | aprAbbr=apr 26 | mayAbbr=mag 27 | junAbbr=giu 28 | julAbbr=lug 29 | augAbbr=ago 30 | sepAbbr=set 31 | octAbbr=ott 32 | novAbbr=nov 33 | decAbbr=dic 34 | sunFull=domenica 35 | monFull=lunedì 36 | tueFull=martedì 37 | wedFull=mercoledì 38 | thuFull=giovedì 39 | friFull=venerdì 40 | satFull=sabato 41 | sunAbbr=dom 42 | monAbbr=lun 43 | tueAbbr=mar 44 | wedAbbr=mer 45 | thuAbbr=gio 46 | friAbbr=ven 47 | satAbbr=sab 48 | -------------------------------------------------------------------------------- /src/sys/locale/ja.props: -------------------------------------------------------------------------------- 1 | dateTime=YYYY年MM月DD日 hh時mm分ss秒 2 | date=YYYY年MM月DD日 3 | time=hh時mm分ss秒 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=1月 9 | febFull=2月 10 | marFull=3月 11 | aprFull=4月 12 | mayFull=5月 13 | junFull=6月 14 | julFull=7月 15 | augFull=8月 16 | sepFull=9月 17 | octFull=10月 18 | novFull=11月 19 | decFull=12月 20 | janAbbr= 1月 21 | febAbbr= 2月 22 | marAbbr= 3月 23 | aprAbbr= 4月 24 | mayAbbr= 5月 25 | junAbbr= 6月 26 | julAbbr= 7月 27 | augAbbr= 8月 28 | sepAbbr= 9月 29 | octAbbr=10月 30 | novAbbr=11月 31 | decAbbr=12月 32 | sunFull=日曜日 33 | monFull=月曜日 34 | tueFull=火曜日 35 | wedFull=水曜日 36 | thuFull=木曜日 37 | friFull=金曜日 38 | satFull=土曜日 39 | sunAbbr=日 40 | monAbbr=月 41 | tueAbbr=火 42 | wedAbbr=水 43 | thuAbbr=木 44 | friAbbr=金 45 | satAbbr=土 46 | -------------------------------------------------------------------------------- /src/sys/locale/kk.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | weekdayStart=sun 8 | janFull=Қаңтар 9 | febFull=Ақпан 10 | marFull=Наурыз 11 | aprFull=Сәуір 12 | mayFull=Мамыр 13 | junFull=Маусым 14 | julFull=Шілде 15 | augFull=Тамыз 16 | sepFull=Қыркүйек 17 | octFull=Қазан 18 | novFull=Қараша 19 | decFull=Желтоқсан 20 | janAbbr=Қаң 21 | febAbbr=Ақп 22 | marAbbr=Нау 23 | aprAbbr=Сәу 24 | mayAbbr=Мам 25 | junAbbr=Мау 26 | julAbbr=Шіл 27 | augAbbr=Там 28 | sepAbbr=Қыр 29 | octAbbr=Қаз 30 | novAbbr=Қар 31 | decAbbr=Жел 32 | sunFull=Жексенбі 33 | monFull=Дүйсенбі 34 | tueFull=Сейсенбі 35 | wedFull=Сәрсенбі 36 | thuFull=Бейсенбі 37 | friFull=Жұма 38 | satFull=Сенбі 39 | sunAbbr=Жк 40 | monAbbr=Дс 41 | tueAbbr=Сс 42 | wedAbbr=Ср 43 | thuAbbr=Бс 44 | friAbbr=Жм 45 | satAbbr=Сн -------------------------------------------------------------------------------- /src/sys/locale/km.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW ថ្ងៃ D ខែ MMMM ឆ្នាំ YYYY, hh ម៉ោង m នាទី ss វិនាទី​ 2 | date=D MMMM YYYY 3 | time=hh:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=មករា 9 | febFull=កុម្ភៈ 10 | marFull=មិនា 11 | aprFull=មេសា 12 | mayFull=ឧសភា 13 | junFull=មិថុនា 14 | julFull=កក្កដា 15 | augFull=សីហា 16 | sepFull=កញ្ញា 17 | octFull=តុលា 18 | novFull=វិច្ឆិកា 19 | decFull=ធ្នូ 20 | janAbbr=១ 21 | febAbbr=២ 22 | marAbbr=៣ 23 | aprAbbr=៤ 24 | mayAbbr=៥ 25 | junAbbr=៦ 26 | julAbbr=៧ 27 | augAbbr=៨ 28 | sepAbbr=៩ 29 | octAbbr=១០ 30 | novAbbr=១១ 31 | decAbbr=១២ 32 | sunFull=ថ្ងៃ​អាទិត្យ 33 | monFull=ថ្ងៃ​ច័ន្ទ 34 | tueFull=ថ្ងៃ​អង្គារ 35 | wedFull=ថ្ងៃ​ពុធ 36 | thuFull=ថ្ងៃ​ព្រហស្បតិ៍ 37 | friFull=ថ្ងៃ​សុក្រ 38 | satFull=ថ្ងៃ​សៅរ៍ 39 | sunAbbr=អា 40 | monAbbr=ច 41 | tueAbbr=អ 42 | wedAbbr=ពុ 43 | thuAbbr=ព្រ 44 | friAbbr=សុ 45 | satAbbr=ស 46 | -------------------------------------------------------------------------------- /src/sys/locale/kn.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMM YYYY kk:mm:ss aa zzz 2 | date=WWWW DD MMM YYYY 3 | time=kk:mm:ss 4 | weekdayStart=sun 5 | janFull=ಜನವರಿ 6 | febFull=ಫೆಬ್ರವರಿ 7 | marFull=ಮಾರ್ಚ 8 | aprFull=ಏಪ್ರಿಲ್ 9 | mayFull=ಮೇ 10 | junFull=ಜೂನ್ 11 | julFull=ಜುಲಾಯಿ 12 | augFull=ಆಗಸ್ತು 13 | sepFull=ಸೆಪ್ಟೆಂಬರ 14 | octFull=ಅಕ್ತೂಬರ 15 | novFull=ನವೆಂಬರ 16 | decFull=ದಶಂಬರ 17 | janAbbr=ಜ 18 | febAbbr=ಫೆ 19 | marAbbr=ಮಾ 20 | aprAbbr=ಏ 21 | mayAbbr=ಮೇ 22 | junAbbr=ಜೂ 23 | julAbbr=ಜು 24 | augAbbr=ಆ 25 | sepAbbr=ಸೆ 26 | octAbbr=ಅ 27 | novAbbr=ನ 28 | decAbbr=ದ 29 | sunFull=ರವಿವಾರ 30 | monFull=ಸೋಮವಾರ 31 | tueFull=ಮಂಗಳವಾರ 32 | wedFull=ಬುಧವಾರ 33 | thuFull=ಗುರುವಾರ 34 | friFull=ಶುಕ್ರವಾರ 35 | satFull=ಶನಿವಾರ 36 | sunAbbr=ರ 37 | monAbbr=ಸೋ 38 | tueAbbr=ಮಂ 39 | wedAbbr=ಬು 40 | thuAbbr=ಗು 41 | friAbbr=ಶು 42 | satAbbr=ಶ -------------------------------------------------------------------------------- /src/sys/locale/ko.props: -------------------------------------------------------------------------------- 1 | dateTime=YYYY년 MM월 DD일 (WWW) aa kk시 mm분 ss초 zzz 2 | date=YYYY년 MM월 DD일 3 | time=hh시 mm분 ss초 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | weekdayStart=sun 8 | janFull=1월 9 | febFull=2월 10 | marFull=3월 11 | aprFull=4월 12 | mayFull=5월 13 | junFull=6월 14 | julFull=7월 15 | augFull=8월 16 | sepFull=9월 17 | octFull=10월 18 | novFull=11월 19 | decFull=12월 20 | janAbbr= 1월 21 | febAbbr= 2월 22 | marAbbr= 3월 23 | aprAbbr= 4월 24 | mayAbbr= 5월 25 | junAbbr= 6월 26 | julAbbr= 7월 27 | augAbbr= 8월 28 | sepAbbr= 9월 29 | octAbbr=10월 30 | novAbbr=11월 31 | decAbbr=12월 32 | sunFull=일요일 33 | monFull=월요일 34 | tueFull=화요일 35 | wedFull=수요일 36 | thuFull=목요일 37 | friFull=금요일 38 | satFull=토요일 39 | sunAbbr=일 40 | monAbbr=월 41 | tueAbbr=화 42 | wedAbbr=수 43 | thuAbbr=목 44 | friAbbr=금 45 | satAbbr=토 -------------------------------------------------------------------------------- /src/sys/locale/ku.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMMM YYYY hh:mm:ss zzz 2 | date=DD/MM/YYYY 3 | time=hh:mm:ss 4 | weekdayStart=sun 5 | janFull=çile 6 | febFull=sibat 7 | marFull=adar 8 | aprFull=nîsan 9 | mayFull=gulan 10 | junFull=hezîran 11 | julFull=tîrmeh 12 | augFull=tebax 13 | sepFull=îlon 14 | octFull=cotmeh 15 | novFull=mijdar 16 | decFull=kanûn 17 | janAbbr=Çil 18 | febAbbr=Sib 19 | marAbbr=Ada 20 | aprAbbr=Nîs 21 | mayAbbr=Gul 22 | junAbbr=Hez 23 | julAbbr=Tîr 24 | augAbbr=Teb 25 | sepAbbr=Îlo 26 | octAbbr=Cot 27 | novAbbr=Mij 28 | decAbbr=Kan 29 | sunFull=Yekşem 30 | monFull=Duşem 31 | tueFull=Sêşem 32 | wedFull=Çarşem 33 | thuFull=Pêncşem 34 | friFull=În 35 | satFull=Şemî 36 | sunAbbr=Yş 37 | monAbbr=Dş 38 | tueAbbr=Sş 39 | wedAbbr=Çş 40 | thuAbbr=Pş 41 | friAbbr=În 42 | satAbbr=Ş 43 | -------------------------------------------------------------------------------- /src/sys/locale/lo.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW D MMM YY, hh:mm:ss zzz 2 | date=DD/MM/YY 3 | time=hh:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=ມັງກອນ 9 | febFull=ກຸມຟາ 10 | marFull=ມີນາ 11 | aprFull=ເມສາ 12 | mayFull=ພຶດສະພາ 13 | junFull=ມິຖຸນາ 14 | julFull=ກໍລະກົດ 15 | augFull=ສິງຫາ 16 | sepFull=ກັນຍາ 17 | octFull=ຕຸລາ 18 | novFull=ພະຈິກ 19 | decFull=ທັນວາ 20 | janAbbr=ມ.ກ. 21 | febAbbr=ກ.ພ. 22 | marAbbr=ມ.ນ. 23 | aprAbbr=ມ.ສ. 24 | mayAbbr=ພ.ພ. 25 | junAbbr=ມິ.ຖ. 26 | julAbbr=ກ.ລ. 27 | augAbbr=ສ.ຫ. 28 | sepAbbr=ກ.ຍ. 29 | octAbbr=ຕ.ລ. 30 | novAbbr=ພ.ຈ. 31 | decAbbr=ທ.ວ. 32 | sunFull=ອາທິດ 33 | monFull=ຈັນ 34 | tueFull=ອັງຄານ 35 | wedFull=ພຸດ 36 | thuFull=ພະຫັດ 37 | friFull=ສຸກ 38 | satFull=ເສົາ 39 | sunAbbr=ອາ. 40 | monAbbr=ຈ. 41 | tueAbbr=ຄ. 42 | wedAbbr=ພ. 43 | thuAbbr=ພຫ. 44 | friAbbr=ສ. 45 | satAbbr=ສ. -------------------------------------------------------------------------------- /src/sys/locale/mg.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#.0## 5 | decimal=#.0## 6 | int=# 7 | janFull=janoary 8 | febFull=febroary 9 | marFull=martsa 10 | aprFull=aprily 11 | mayFull=mey 12 | junFull=jona 13 | julFull=jolay 14 | augFull=aogositra 15 | sepFull=septambra 16 | octFull=oktobra 17 | novFull=novambra 18 | decFull=desambra 19 | janAbbr=jan 20 | febAbbr=feb 21 | marAbbr=mar 22 | aprAbbr=apr 23 | mayAbbr=mey 24 | junAbbr=jon 25 | julAbbr=jol 26 | augAbbr=aog 27 | sepAbbr=sep 28 | octAbbr=okt 29 | novAbbr=nov 30 | decAbbr=des 31 | sunFull=alahady 32 | monFull=alatsinainy 33 | tueFull=talata 34 | wedFull=alarobia 35 | thuFull=alakamisy 36 | friFull=zoma 37 | satFull=sabotsy 38 | sunAbbr=lhd 39 | monAbbr=lts 40 | tueAbbr=tlt 41 | wedAbbr=lrb 42 | thuAbbr=lkm 43 | friAbbr=zom 44 | satAbbr=sab 45 | -------------------------------------------------------------------------------- /src/sys/locale/ml.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMMM YYYY kk:mm:ss aa zzz 2 | date=WWWW DD MMMM YYYY 3 | time=kk:mm:ss 4 | float=##,##,###.0## 5 | decimal=##,##,###.0## 6 | int=##,##,### 7 | weekdayStart=sun 8 | janFull=ജനുവരി 9 | febFull=ഫെബ്രുവരി 10 | marFull=മാര്‍ച്ച് 11 | aprFull=ഏപ്രില്‍ 12 | mayFull=മെയ് 13 | junFull=ജൂണ്‍ 14 | julFull=ജൂലൈ 15 | augFull=ആഗസ്റ്റ് 16 | sepFull=സെപ്റ്റംബര്‍ 17 | octFull=ഒക്ടോബര്‍ 18 | novFull=നവംബര്‍ 19 | decFull=ഡിസംബര്‍ 20 | janAbbr=ജനു 21 | febAbbr=ഫെബ് 22 | marAbbr=മാര്‍ 23 | aprAbbr=ഏപ്ര 24 | mayAbbr=മെ 25 | junAbbr=ജൂണ്‍ 26 | julAbbr=ജൂലൈ 27 | augAbbr=ആഗ് 28 | sepAbbr=സെപ് 29 | octAbbr=ഒക്ടോ 30 | novAbbr=നവം 31 | decAbbr=ഡിസം 32 | sunFull=ഞായര്‍ 33 | monFull=തിങ്കള്‍ 34 | tueFull=ചൊവ്വ 35 | wedFull=ബുധന്‍ 36 | thuFull=വ്യാഴം 37 | friFull=വെള്ളി 38 | satFull=ശനി 39 | sunAbbr=ഞാ 40 | monAbbr=തി 41 | tueAbbr=ചൊ 42 | wedAbbr=ബു 43 | thuAbbr=വ്യാ 44 | friAbbr=വെ 45 | satAbbr=ശ -------------------------------------------------------------------------------- /src/sys/locale/mn.props: -------------------------------------------------------------------------------- 1 | dateTime=YYYY MMM DD, WWW hh:mm:ss zzz 2 | date=YYYY.MM.DD 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | weekdayStart=sun 8 | janFull=Хулгана сарын 9 | febFull=Үхэр сарын 10 | marFull=Бар сарын 11 | aprFull=Туулай сарын 12 | mayFull=Луу сарын 13 | junFull=Могой сарын 14 | julFull=Морь сарын 15 | augFull=Хонь сарын 16 | sepFull=Бич сарын 17 | octFull=Тахиа сарын 18 | novFull=Нохой сарын 19 | decFull=Гахай сарын 20 | janAbbr=Хул 21 | febAbbr=Үхэ 22 | marAbbr=Бар 23 | aprAbbr=Туу 24 | mayAbbr=Луу 25 | junAbbr=Мог 26 | julAbbr=Мор 27 | augAbbr=Хон 28 | sepAbbr=Бич 29 | octAbbr=Тах 30 | novAbbr=Нох 31 | decAbbr=Гах 32 | sunFull=Ням 33 | monFull=Даваа 34 | tueFull=Мягмар 35 | wedFull=Лхагва 36 | thuFull=Пүрэв 37 | friFull=Баасан 38 | satFull=Бямба 39 | sunAbbr=Ня 40 | monAbbr=Да 41 | tueAbbr=Мя 42 | wedAbbr=Лх 43 | thuAbbr=Пү 44 | friAbbr=Ба 45 | satAbbr=Бя -------------------------------------------------------------------------------- /src/sys/locale/mr.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMM YYYY kk:mm:ss aa zzz 2 | date=WWWW DD MMM YYYY 3 | time=kk:mm:ss 4 | weekdayStart=sun 5 | janFull=जानेवारी 6 | febFull=फेबृवारी 7 | marFull=मार्च 8 | aprFull=एप्रिल 9 | mayFull=मे 10 | junFull=जून 11 | julFull=जुलै 12 | augFull=ओगस्ट 13 | sepFull=सेप्टेंबर 14 | octFull=ओक्टोबर 15 | novFull=नोव्हेंबर 16 | decFull=डिसेंबर 17 | janAbbr=जानेवारी 18 | febAbbr=फेबृवारी 19 | marAbbr=मार्च 20 | aprAbbr=एप्रिल 21 | mayAbbr=मे 22 | junAbbr=जून 23 | julAbbr=जुलै 24 | augAbbr=ओगस्ट 25 | sepAbbr=सेप्टेंबर 26 | octAbbr=ओक्टोबर 27 | novAbbr=नोव्हेंबर 28 | decAbbr=डिसेंबर 29 | sunFull=रविवार 30 | monFull=सोमवार 31 | tueFull=मंगळवार 32 | wedFull=मंगळवार 33 | thuFull=गुरुवार 34 | friFull=शुक्रवार 35 | satFull=शनिवार 36 | sunAbbr=रवि 37 | monAbbr=सोम 38 | tueAbbr=मंगळ 39 | wedAbbr=बुध 40 | thuAbbr=गुरु 41 | friAbbr=शुक्र 42 | satAbbr=शनि -------------------------------------------------------------------------------- /src/sys/locale/ms.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMM YYYY kk:mm:ss aa zzz 2 | date=WWWW DD MMM YYYY 3 | time=kk:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=Januari 9 | febFull=Februari 10 | marFull=Mac 11 | aprFull=April 12 | mayFull=Mei 13 | junFull=Jun 14 | julFull=Julai 15 | augFull=Ogos 16 | sepFull=September 17 | octFull=Oktober 18 | novFull=November 19 | decFull=Disember 20 | janAbbr=Jan 21 | febAbbr=Feb 22 | marAbbr=Mac 23 | aprAbbr=Apr 24 | mayAbbr=Mei 25 | junAbbr=Jun 26 | julAbbr=Jul 27 | augAbbr=Ogos 28 | sepAbbr=Sep 29 | octAbbr=Okt 30 | novAbbr=Nov 31 | decAbbr=Dis 32 | sunFull=Ahad 33 | monFull=Isnin 34 | tueFull=Selasa 35 | wedFull=Rabu 36 | thuFull=Khamis 37 | friFull=Jumaat 38 | satFull=Sabtu 39 | sunAbbr=Ahd 40 | monAbbr=Isn 41 | tueAbbr=Sel 42 | wedAbbr=Rab 43 | thuAbbr=Kha 44 | friAbbr=Jum 45 | satAbbr=Sab -------------------------------------------------------------------------------- /src/sys/locale/nb.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD. MMM YYYY hh.mm zzz 2 | date=DD. MMM YYYY 3 | time=hh.mm 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=mon 10 | janFull=januar 11 | febFull=februar 12 | marFull=mars 13 | aprFull=april 14 | mayFull=mai 15 | junFull=juni 16 | julFull=juli 17 | augFull=august 18 | sepFull=september 19 | octFull=oktober 20 | novFull=november 21 | decFull=desember 22 | janAbbr=jan. 23 | febAbbr=feb. 24 | marAbbr=mars 25 | aprAbbr=april 26 | mayAbbr=mai 27 | junAbbr=juni 28 | julAbbr=juli 29 | augAbbr=aug. 30 | sepAbbr=sep. 31 | octAbbr=okt. 32 | novAbbr=nov. 33 | decAbbr=des. 34 | sunFull=søndag 35 | monFull=mandag 36 | tueFull=tirsdag 37 | wedFull=onsdag 38 | thuFull=torsdag 39 | friFull=fredag 40 | satFull=lørdag 41 | sunAbbr=sø. 42 | monAbbr=ma. 43 | tueAbbr=ti. 44 | wedAbbr=on. 45 | thuAbbr=to. 46 | friAbbr=fr. 47 | satAbbr=lø. -------------------------------------------------------------------------------- /src/sys/locale/ne.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMM YYYY kk:mm:ss aa zzz 2 | date=WWWW DD MMM YYYY 3 | time=kk:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=जनवरी 9 | febFull=फ़रवरी 10 | marFull=मार्च 11 | aprFull=अप्रेल 12 | mayFull=मई 13 | junFull=जून 14 | julFull=जुलाई 15 | augFull=अगस्त 16 | sepFull=सितम्बर 17 | octFull=अक्टूबर 18 | novFull=नवम्बर 19 | decFull=दिसम्बर 20 | janAbbr=जनवरी 21 | febAbbr=फ़रवरी 22 | marAbbr=मार्च 23 | aprAbbr=अप्रेल 24 | mayAbbr=मई 25 | junAbbr=जून 26 | julAbbr=जुलाई 27 | augAbbr=अगस्त 28 | sepAbbr=सितम्बर 29 | octAbbr=अक्टूबर 30 | novAbbr=नवम्बर 31 | decAbbr=दिसम्बर 32 | sunFull=आइतबार 33 | monFull=सोमबार 34 | tueFull=मंगलबार 35 | wedFull=बुधबार 36 | thuFull=बिहिबार 37 | friFull=शुक्रबार 38 | satFull=शनिबार 39 | sunAbbr=आइत 40 | monAbbr=सोम 41 | tueAbbr=मंगल 42 | wedAbbr=बुध 43 | thuAbbr=बिहि 44 | friAbbr=शुक्र 45 | satAbbr=शनि -------------------------------------------------------------------------------- /src/sys/locale/nn.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD. MMM YYYY hh.mm zzz 2 | date=DD. MMM YYYY 3 | time=hh.mm 4 | numDecimal=, 5 | numGrouping=\u00a0 6 | weekdayStart=mon 7 | janFull=januar 8 | febFull=februar 9 | marFull=mars 10 | aprFull=april 11 | mayFull=mai 12 | junFull=juni 13 | julFull=juli 14 | augFull=august 15 | sepFull=september 16 | octFull=oktober 17 | novFull=november 18 | decFull=desember 19 | janAbbr=jan. 20 | febAbbr=feb. 21 | marAbbr=mars 22 | aprAbbr=april 23 | mayAbbr=mai 24 | junAbbr=juni 25 | julAbbr=juli 26 | augAbbr=aug. 27 | sepAbbr=sep. 28 | octAbbr=okt. 29 | novAbbr=nov. 30 | decAbbr=des. 31 | sunFull=sundag 32 | monFull=måndag 33 | tueFull=tysdag 34 | wedFull=onsdag 35 | thuFull=torsdag 36 | friFull=fredag 37 | satFull=laurdag 38 | sunAbbr=su. 39 | monAbbr=må. 40 | tueAbbr=ty. 41 | wedAbbr=on. 42 | thuAbbr=to. 43 | friAbbr=fr. 44 | satAbbr=la. -------------------------------------------------------------------------------- /src/sys/locale/om.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW, MMMM D, YYYY k:mm:ss aa zzz 2 | date=DD/MM/YYYY 3 | time=k:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | janFull=Amajjii 8 | febFull=Guraandhala 9 | marFull=Bitooteessa 10 | aprFull=Elba 11 | mayFull=Caamsa 12 | junFull=Waxabajjii 13 | julFull=Adooleessa 14 | augFull=Hagayya 15 | sepFull=Fuulbana 16 | octFull=Onkololeessa 17 | novFull=Sadaasa 18 | decFull=Muddee 19 | janAbbr=Ama 20 | febAbbr=Gur 21 | marAbbr=Bit 22 | aprAbbr=Elb 23 | mayAbbr=Cam 24 | junAbbr=Wax 25 | julAbbr=Ado 26 | augAbbr=Hag 27 | sepAbbr=Ful 28 | octAbbr=Onk 29 | novAbbr=Sad 30 | decAbbr=Mud 31 | sunFull=Dilbata 32 | monFull=Wiixata 33 | tueFull=Qibxata 34 | wedFull=Roobii 35 | thuFull=Kamiisa 36 | friFull=Jimaata 37 | satFull=Sanbata 38 | sunAbbr=Dil 39 | monAbbr=Wix 40 | tueAbbr=Qib 41 | wedAbbr=Rob 42 | thuAbbr=Kam 43 | friAbbr=Jim 44 | satAbbr=San 45 | -------------------------------------------------------------------------------- /src/sys/locale/pa.props: -------------------------------------------------------------------------------- 1 | dateTime=و hh:mm:ss zzz ت DD MMMM YYYY 2 | date=DD/MM/YYYY 3 | time=hh:mm:ss 4 | janFull=جنوري 5 | febFull=فروري 6 | marFull=مارچ 7 | aprFull=اپريل 8 | mayFull=مٓی 9 | junFull=جون 10 | julFull=جولاي 11 | augFull=اگست 12 | sepFull=ستمبر 13 | octFull=اكتوبر 14 | novFull=نومبر 15 | decFull=دسمبر 16 | janAbbr=جنوري 17 | febAbbr=فروري 18 | marAbbr=مارچ 19 | aprAbbr=اپريل 20 | mayAbbr=مٓی 21 | junAbbr=جون 22 | julAbbr=جولاي 23 | augAbbr=اگست 24 | sepAbbr=ستمبر 25 | octAbbr=اكتوبر 26 | novAbbr=نومبر 27 | decAbbr=دسمبر 28 | sunFull=اتوار 29 | monFull=پير 30 | tueFull=منگل 31 | wedFull=بدھ 32 | thuFull=جمعرات 33 | friFull=جمعه 34 | satFull=هفته 35 | sunAbbr=اتوار 36 | monAbbr=پير 37 | tueAbbr=منگل 38 | wedAbbr=بدھ 39 | thuAbbr=جمعرات 40 | friAbbr=جمعه 41 | satAbbr=هفته 42 | -------------------------------------------------------------------------------- /src/sys/locale/pl.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW, D MMM YYYY, hh:mm:ss zzz 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#.0## 5 | decimal=#.0## 6 | int=# 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=styczeń 11 | febFull=luty 12 | marFull=marzec 13 | aprFull=kwiecień 14 | mayFull=maj 15 | junFull=czerwiec 16 | julFull=lipiec 17 | augFull=sierpień 18 | sepFull=wrzesień 19 | octFull=październik 20 | novFull=listopad 21 | decFull=grudzień 22 | janAbbr=sty 23 | febAbbr=lut 24 | marAbbr=mar 25 | aprAbbr=kwi 26 | mayAbbr=maj 27 | junAbbr=cze 28 | julAbbr=lip 29 | augAbbr=sie 30 | sepAbbr=wrz 31 | octAbbr=paź 32 | novAbbr=lis 33 | decAbbr=gru 34 | sunFull=niedziela 35 | monFull=poniedziałek 36 | tueFull=wtorek 37 | wedFull=środa 38 | thuFull=czwartek 39 | friFull=piątek 40 | satFull=sobota 41 | sunAbbr=nie 42 | monAbbr=pon 43 | tueAbbr=wto 44 | wedAbbr=śro 45 | thuAbbr=czw 46 | friAbbr=pią 47 | satAbbr=sob -------------------------------------------------------------------------------- /src/sys/locale/pt.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD-MM-YYYY 3 | time=hh:mm:ss 4 | float=#.0## 5 | decimal=#.0## 6 | int=# 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=Janeiro 11 | febFull=Fevereiro 12 | marFull=Março 13 | aprFull=Abril 14 | mayFull=Maio 15 | junFull=Junho 16 | julFull=Julho 17 | augFull=Agosto 18 | sepFull=Setembro 19 | octFull=Outubro 20 | novFull=Novembro 21 | decFull=Dezembro 22 | janAbbr=Jan 23 | febAbbr=Fev 24 | marAbbr=Mar 25 | aprAbbr=Abr 26 | mayAbbr=Mai 27 | junAbbr=Jun 28 | julAbbr=Jul 29 | augAbbr=Ago 30 | sepAbbr=Set 31 | octAbbr=Out 32 | novAbbr=Nov 33 | decAbbr=Dez 34 | sunFull=Domingo 35 | monFull=Segunda 36 | tueFull=Terça 37 | wedFull=Quarta 38 | thuFull=Quinta 39 | friFull=Sexta 40 | satFull=Sábado 41 | sunAbbr=Dom 42 | monAbbr=Seg 43 | tueAbbr=Ter 44 | wedAbbr=Qua 45 | thuAbbr=Qui 46 | friAbbr=Sex 47 | satAbbr=Sáb 48 | -------------------------------------------------------------------------------- /src/sys/locale/ro.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss z 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=ianuarie 11 | febFull=februarie 12 | marFull=martie 13 | aprFull=aprilie 14 | mayFull=mai 15 | junFull=iunie 16 | julFull=iulie 17 | augFull=august 18 | sepFull=septembrie 19 | octFull=octombrie 20 | novFull=noiembrie 21 | decFull=decembrie 22 | janAbbr=ian 23 | febAbbr=feb 24 | marAbbr=mar 25 | aprAbbr=apr 26 | mayAbbr=mai 27 | junAbbr=iun 28 | julAbbr=iul 29 | augAbbr=aug 30 | sepAbbr=sep 31 | octAbbr=oct 32 | novAbbr=nov 33 | decAbbr=dec 34 | sunFull=duminică 35 | monFull=luni 36 | tueFull=marţi 37 | wedFull=miercuri 38 | thuFull=joi 39 | friFull=vineri 40 | satFull=sâmbătă 41 | sunAbbr=Du 42 | monAbbr=Lu 43 | tueAbbr=Ma 44 | wedAbbr=Mi 45 | thuAbbr=Jo 46 | friAbbr=Vi 47 | satAbbr=Sb 48 | -------------------------------------------------------------------------------- /src/sys/locale/ru.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=Январь 11 | febFull=Февраль 12 | marFull=Март 13 | aprFull=Апрель 14 | mayFull=Май 15 | junFull=Июнь 16 | julFull=Июль 17 | augFull=Август 18 | sepFull=Сентябрь 19 | octFull=Октябрь 20 | novFull=Ноябрь 21 | decFull=Декабрь 22 | janAbbr=янв. 23 | febAbbr=февр. 24 | marAbbr=марта 25 | aprAbbr=апр. 26 | mayAbbr=мая 27 | junAbbr=июня 28 | julAbbr=июля 29 | augAbbr=авг. 30 | sepAbbr=сент. 31 | octAbbr=окт. 32 | novAbbr=нояб. 33 | decAbbr=дек. 34 | sunFull=Воскресенье 35 | monFull=Понедельник 36 | tueFull=Вторник 37 | wedFull=Среда 38 | thuFull=Четверг 39 | friFull=Пятница 40 | satFull=Суббота 41 | sunAbbr=Вс. 42 | monAbbr=Пн. 43 | tueAbbr=Вт. 44 | wedAbbr=Ср. 45 | thuAbbr=Чт. 46 | friAbbr=Пт. 47 | satAbbr=Сб. -------------------------------------------------------------------------------- /src/sys/locale/sd.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMMM YYYY، hh:mm:ss zzz 2 | date=DD/MM/YY 3 | time=hh:mm:ss 4 | float=##,##,###.0## 5 | decimal=##,##,###.0## 6 | int=##,##,### 7 | janFull=جنوري 8 | febFull=فيبروري 9 | marFull=مارچ 10 | aprFull=اپريل 11 | mayFull=مئي 12 | junFull=جون 13 | julFull=جولاءِ 14 | augFull=آگسٽ 15 | sepFull=سيپٽيمبر 16 | octFull=آڪٽوبر 17 | novFull=نومبر 18 | decFull=ڊسمبر 19 | janAbbr=جنوري 20 | febAbbr=فيبروري 21 | marAbbr=مارچ 22 | aprAbbr=اپريل 23 | mayAbbr=مئي 24 | junAbbr=جون 25 | julAbbr=جولاءِ 26 | augAbbr=آگسٽ 27 | sepAbbr=سيپٽيمبر 28 | octAbbr=آڪٽوبر 29 | novAbbr=نومبر 30 | decAbbr=ڊسمبر 31 | sunFull=آچر 32 | monFull=سومر 33 | tueFull=اڱارو 34 | wedFull=اربع 35 | thuFull=خميس 36 | friFull=جمعو 37 | satFull=ڇنڇر 38 | sunAbbr=آچر 39 | monAbbr=سومر 40 | tueAbbr=اڱارو 41 | wedAbbr=اربع 42 | thuAbbr=خميس 43 | friAbbr=جمعو 44 | satAbbr=ڇنڇر -------------------------------------------------------------------------------- /src/sys/locale/sk.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW D. MMMM YYYY, hh:mm:ss zzz 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=január 11 | febFull=február 12 | marFull=marec 13 | aprFull=apríl 14 | mayFull=máj 15 | junFull=jún 16 | julFull=júl 17 | augFull=august 18 | sepFull=september 19 | octFull=október 20 | novFull=november 21 | decFull=december 22 | janAbbr=jan 23 | febAbbr=feb 24 | marAbbr=mar 25 | aprAbbr=apr 26 | mayAbbr=máj 27 | junAbbr=jún 28 | julAbbr=júl 29 | augAbbr=aug 30 | sepAbbr=sep 31 | octAbbr=okt 32 | novAbbr=nov 33 | decAbbr=dec 34 | sunFull=Nedeľa 35 | monFull=Pondelok 36 | tueFull=Utorok 37 | wedFull=Streda 38 | thuFull=Štvrtok 39 | friFull=Piatok 40 | satFull=Sobota 41 | sunAbbr=Ne 42 | monAbbr=Po 43 | tueAbbr=Ut 44 | wedAbbr=St 45 | thuAbbr=Št 46 | friAbbr=Pi 47 | satAbbr=So 48 | -------------------------------------------------------------------------------- /src/sys/locale/sl.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD. MM. YYYY 3 | time=hh:mm:ss 4 | float=#.0## 5 | decimal=#.0## 6 | int=# 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=januar 11 | febFull=februar 12 | marFull=marec 13 | aprFull=april 14 | mayFull=maj 15 | junFull=junij 16 | julFull=julij 17 | augFull=avgust 18 | sepFull=september 19 | octFull=oktober 20 | novFull=november 21 | decFull=december 22 | janAbbr=jan 23 | febAbbr=feb 24 | marAbbr=mar 25 | aprAbbr=apr 26 | mayAbbr=maj 27 | junAbbr=jun 28 | julAbbr=jul 29 | augAbbr=avg 30 | sepAbbr=sep 31 | octAbbr=okt 32 | novAbbr=nov 33 | decAbbr=dec 34 | sunFull=nedelja 35 | monFull=ponedeljek 36 | tueFull=torek 37 | wedFull=sreda 38 | thuFull=četrtek 39 | friFull=petek 40 | satFull=sobota 41 | sunAbbr=ned 42 | monAbbr=pon 43 | tueAbbr=tor 44 | wedAbbr=sre 45 | thuAbbr=čet 46 | friAbbr=pet 47 | satAbbr=sob 48 | -------------------------------------------------------------------------------- /src/sys/locale/sr.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW, DD. MMMM YYYY. hh:mm:ss zzz 2 | date=DD.MM.YYYY. 3 | time=hh:mm:ss 4 | numDecimal=, 5 | numGrouping=. 6 | weekdayStart=sun 7 | janFull=јануар 8 | febFull=фебруар 9 | marFull=март 10 | aprFull=април 11 | mayFull=мај 12 | junFull=јун 13 | julFull=јул 14 | augFull=август 15 | sepFull=септембар 16 | octFull=октобар 17 | novFull=новембар 18 | decFull=децембар 19 | janAbbr=јан 20 | febAbbr=феб 21 | marAbbr=мар 22 | aprAbbr=апр 23 | mayAbbr=мај 24 | junAbbr=јун 25 | julAbbr=јул 26 | augAbbr=авг 27 | sepAbbr=сеп 28 | octAbbr=окт 29 | novAbbr=нов 30 | decAbbr=дец 31 | sunFull=недјеља 32 | monFull=понедељак 33 | tueFull=уторак 34 | wedFull=сриједа 35 | thuFull=четвртак 36 | friFull=петак 37 | satFull=субота 38 | sunAbbr=нед 39 | monAbbr=пон 40 | tueAbbr=уто 41 | wedAbbr=сри 42 | thuAbbr=чет 43 | friAbbr=пет 44 | satAbbr=суб 45 | -------------------------------------------------------------------------------- /src/sys/locale/sv.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW D MMM YYYY hh.mm.ss zzz 2 | date=YYYY-MM-DD 3 | time=hh.mm.ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=januari 11 | febFull=februari 12 | marFull=mars 13 | aprFull=april 14 | mayFull=maj 15 | junFull=juni 16 | julFull=juli 17 | augFull=augusti 18 | sepFull=september 19 | octFull=oktober 20 | novFull=november 21 | decFull=december 22 | janAbbr=jan 23 | febAbbr=feb 24 | marAbbr=mar 25 | aprAbbr=apr 26 | mayAbbr=maj 27 | junAbbr=jun 28 | julAbbr=jul 29 | augAbbr=aug 30 | sepAbbr=sep 31 | octAbbr=okt 32 | novAbbr=nov 33 | decAbbr=dec 34 | sunFull=söndag 35 | monFull=måndag 36 | tueFull=tisdag 37 | wedFull=onsdag 38 | thuFull=torsdag 39 | friFull=fredag 40 | satFull=lördag 41 | sunAbbr=sön 42 | monAbbr=mån 43 | tueAbbr=tis 44 | wedAbbr=ons 45 | thuAbbr=tor 46 | friAbbr=fre 47 | satAbbr=lör -------------------------------------------------------------------------------- /src/sys/locale/ta.props: -------------------------------------------------------------------------------- 1 | dateTime=WWWW DD MMMM YYYY kk:mm:ss aa zzz 2 | date=WWWW DD MMMM YYYY 3 | time=kk:mm:ss 4 | float=##,##,###.0## 5 | decimal=##,##,###.0## 6 | int=##,##,### 7 | weekdayStart=sun 8 | janFull=ஜனவரி 9 | febFull=பிப்ரவரி 10 | marFull=மார்ச் 11 | aprFull=ஏப்ரல் 12 | mayFull=மே 13 | junFull=ஜூன் 14 | julFull=ஜூலை 15 | augFull=ஆகஸ்ட் 16 | sepFull=செப்டம்பர் 17 | octFull=அக்டோபர் 18 | novFull=நவம்பர் 19 | decFull=டிசம்பர் 20 | janAbbr=ஜன 21 | febAbbr=பிப் 22 | marAbbr=மார் 23 | aprAbbr=ஏப் 24 | mayAbbr=மே 25 | junAbbr=ஜூன் 26 | julAbbr=ஜூலை 27 | augAbbr=ஆக 28 | sepAbbr=செப் 29 | octAbbr=அக் 30 | novAbbr=நவ 31 | decAbbr=டிச 32 | sunFull=ஞாயிறு 33 | monFull=திங்கள் 34 | tueFull=செவ்வாய் 35 | wedFull=புதன் 36 | thuFull=வியாழன் 37 | friFull=வெள்ளி 38 | satFull=சனி 39 | sunAbbr=ஞா 40 | monAbbr=தி 41 | tueAbbr=செ 42 | wedAbbr=பு 43 | thuAbbr=வி 44 | friAbbr=வெ 45 | satAbbr=ச -------------------------------------------------------------------------------- /src/sys/locale/te.props: -------------------------------------------------------------------------------- 1 | dateTime=MMMM DD WWWW YYYY aakk.mm.ss zzz 2 | date=MMMM DD WWWW YYYY 3 | time=aakk.mm.ss 4 | float=##,##,###.0## 5 | decimal=##,##,###.0## 6 | int=##,##,### 7 | weekdayStart=sun 8 | janFull=జనవరి 9 | febFull=ఫిబ్రవరి 10 | marFull=మార్చి 11 | aprFull=ఏప్రిల్ 12 | mayFull=మే 13 | junFull=జూన్ 14 | julFull=జూలై 15 | augFull=ఆగస్టు 16 | sepFull=సెప్టెంబరు 17 | octFull=అక్టోబరు 18 | novFull=నవంబరు 19 | decFull=డిసెంబరు 20 | janAbbr=జనవరి 21 | febAbbr=ఫిబ్రవరి 22 | marAbbr=మార్చి 23 | aprAbbr=ఏప్రిల్ 24 | mayAbbr=మే 25 | junAbbr=జూన్ 26 | julAbbr=జూలై 27 | augAbbr=ఆగస్టు 28 | sepAbbr=సెప్టెంబరు 29 | octAbbr=అక్టోబరు 30 | novAbbr=నవంబరు 31 | decAbbr=డిసెంబరు 32 | sunFull=ఆదివారం 33 | monFull=సోమవారం 34 | tueFull=మంగళవారం 35 | wedFull=బుధవారం 36 | thuFull=గురువారం 37 | friFull=శుక్రవారం 38 | satFull=శనివారం 39 | sunAbbr=ఆది 40 | monAbbr=సోమ 41 | tueAbbr=మంగళ 42 | wedAbbr=బుధ 43 | thuAbbr=గురు 44 | friAbbr=శుక్ర 45 | satAbbr=శని -------------------------------------------------------------------------------- /src/sys/locale/tg.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD.MM.YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | janFull=Января 8 | febFull=Февраля 9 | marFull=Марта 10 | aprFull=Апреля 11 | mayFull=Мая 12 | junFull=Июня 13 | julFull=Июля 14 | augFull=Августа 15 | sepFull=Сентября 16 | octFull=Октября 17 | novFull=Ноября 18 | decFull=Декабря 19 | janAbbr=Янв 20 | febAbbr=Фев 21 | marAbbr=Мар 22 | aprAbbr=Апр 23 | mayAbbr=Май 24 | junAbbr=Июн 25 | julAbbr=Июл 26 | augAbbr=Авг 27 | sepAbbr=Сен 28 | octAbbr=Окт 29 | novAbbr=Ноя 30 | decAbbr=Дек 31 | sunFull=Воскресенье 32 | monFull=Понедельник 33 | tueFull=Вторник 34 | wedFull=Среда 35 | thuFull=Четверг 36 | friFull=Пятница 37 | satFull=Суббота 38 | sunAbbr=Вск 39 | monAbbr=Пнд 40 | tueAbbr=Втр 41 | wedAbbr=Срд 42 | thuAbbr=Чтв 43 | friAbbr=Птн 44 | satAbbr=Сбт -------------------------------------------------------------------------------- /src/sys/locale/th.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW D MMM YY, hh:mm:ss zzz 2 | date=DD/MM/YY 3 | time=hh:mm:ss 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=มกราคม 9 | febFull=กุมภาพันธ์ 10 | marFull=มีนาคม 11 | aprFull=เมษายน 12 | mayFull=พฤษภาคม 13 | junFull=มิถุนายน 14 | julFull=กรกฎาคม 15 | augFull=สิงหาคม 16 | sepFull=กันยายน 17 | octFull=ตุลาคม 18 | novFull=พฤศจิกายน 19 | decFull=ธันวาคม 20 | janAbbr=ม.ค. 21 | febAbbr=ก.พ. 22 | marAbbr=มี.ค. 23 | aprAbbr=เม.ย. 24 | mayAbbr=พ.ค. 25 | junAbbr=มิ.ย. 26 | julAbbr=ก.ค. 27 | augAbbr=ส.ค. 28 | sepAbbr=ก.ย. 29 | octAbbr=ต.ค. 30 | novAbbr=พ.ย. 31 | decAbbr=ธ.ค. 32 | sunFull=อาทิตย์ 33 | monFull=จันทร์ 34 | tueFull=อังคาร 35 | wedFull=พุธ 36 | thuFull=พฤหัสบดี 37 | friFull=ศุกร์ 38 | satFull=เสาร์ 39 | sunAbbr=อา. 40 | monAbbr=จ. 41 | tueAbbr=อ. 42 | wedAbbr=พ. 43 | thuAbbr=พฤ. 44 | friAbbr=ศ. 45 | satAbbr=ส. -------------------------------------------------------------------------------- /src/sys/locale/tl.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY kk:mm:ss aa zzz 2 | date=MM/DD/YY 3 | time=kk:mm:ss aa 4 | janFull=Enero 5 | febFull=Pebrero 6 | marFull=Marso 7 | aprFull=Abril 8 | mayFull=Mayo 9 | junFull=Hunyo 10 | julFull=Hulyo 11 | augFull=Agosto 12 | sepFull=Septiyembre 13 | octFull=Oktubre 14 | novFull=Nobiyembre 15 | decFull=Disyembre 16 | janAbbr=Ene 17 | febAbbr=Peb 18 | marAbbr=Mar 19 | aprAbbr=Abr 20 | mayAbbr=May 21 | junAbbr=Hun 22 | julAbbr=Hul 23 | augAbbr=Ago 24 | sepAbbr=Sep 25 | octAbbr=Okt 26 | novAbbr=Nob 27 | decAbbr=Dis 28 | sunFull=Linggo 29 | monFull=Lunes 30 | tueFull=Martes 31 | wedFull=Miyerkoles 32 | thuFull=Huwebes 33 | friFull=Biyernes 34 | satFull=Sabado 35 | sunAbbr=Lin 36 | monAbbr=Lun 37 | tueAbbr=Mar 38 | wedAbbr=Miy 39 | thuAbbr=Huw 40 | friAbbr=Biy 41 | satAbbr=Sab 42 | -------------------------------------------------------------------------------- /src/sys/locale/tr.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW DD MMM YYYY hh:mm:ss zzz 2 | date=DD-MM-YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=. 9 | weekdayStart=sun 10 | janFull=Ocak 11 | febFull=Şubat 12 | marFull=Mart 13 | aprFull=Nisan 14 | mayFull=Mayıs 15 | junFull=Haziran 16 | julFull=Temmuz 17 | augFull=Ağustos 18 | sepFull=Eylül 19 | octFull=Ekim 20 | novFull=Kasım 21 | decFull=Aralık 22 | janAbbr=Oca 23 | febAbbr=Şub 24 | marAbbr=Mar 25 | aprAbbr=Nis 26 | mayAbbr=May 27 | junAbbr=Haz 28 | julAbbr=Tem 29 | augAbbr=Ağu 30 | sepAbbr=Eyl 31 | octAbbr=Eki 32 | novAbbr=Kas 33 | decAbbr=Ara 34 | sunFull=Pazar 35 | monFull=Pazartesi 36 | tueFull=Salı 37 | wedFull=Çarşamba 38 | thuFull=Perşembe 39 | friFull=Cuma 40 | satFull=Cumartesi 41 | sunAbbr=Paz 42 | monAbbr=Pzt 43 | tueAbbr=Sal 44 | wedAbbr=Çrş 45 | thuAbbr=Prş 46 | friAbbr=Cum 47 | satAbbr=Cts 48 | -------------------------------------------------------------------------------- /src/sys/locale/uk.props: -------------------------------------------------------------------------------- 1 | dateTime=WWW, DD-MMM-YYYY hh:mm:ss z 2 | date=DD.MM.YY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | numDecimal=, 8 | numGrouping=\u00a0 9 | weekdayStart=sun 10 | janFull=січень 11 | febFull=лютий 12 | marFull=березень 13 | aprFull=квітень 14 | mayFull=травень 15 | junFull=червень 16 | julFull=липень 17 | augFull=серпень 18 | sepFull=вересень 19 | octFull=жовтень 20 | novFull=листопад 21 | decFull=грудень 22 | janAbbr=січ 23 | febAbbr=лют 24 | marAbbr=бер 25 | aprAbbr=кві 26 | mayAbbr=тра 27 | junAbbr=чер 28 | julAbbr=лип 29 | augAbbr=сер 30 | sepAbbr=вер 31 | octAbbr=жов 32 | novAbbr=лис 33 | decAbbr=гру 34 | sunFull=неділя 35 | monFull=понеділок 36 | tueFull=вівторок 37 | wedFull=середа 38 | thuFull=четвер 39 | friFull=п'ятниця 40 | satFull=субота 41 | sunAbbr=нд 42 | monAbbr=пн 43 | tueAbbr=вт 44 | wedAbbr=ср 45 | thuAbbr=чт 46 | friAbbr=пт 47 | satAbbr=сб 48 | -------------------------------------------------------------------------------- /src/sys/locale/ur.props: -------------------------------------------------------------------------------- 1 | dateTime=و hh:mm:ss zzz ت DD MMMM YYYY 2 | date=DD/MM/YYYY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | janFull=جنوري 8 | febFull=فروري 9 | marFull=مارچ 10 | aprFull=اپريل 11 | mayFull=مٓی 12 | junFull=جون 13 | julFull=جولاي 14 | augFull=اگست 15 | sepFull=ستمبر 16 | octFull=اكتوبر 17 | novFull=نومبر 18 | decFull=دسمبر 19 | janAbbr=جنوري 20 | febAbbr=فروري 21 | marAbbr=مارچ 22 | aprAbbr=اپريل 23 | mayAbbr=مٓی 24 | junAbbr=جون 25 | julAbbr=جولاي 26 | augAbbr=اگست 27 | sepAbbr=ستمبر 28 | octAbbr=اكتوبر 29 | novAbbr=نومبر 30 | decAbbr=دسمبر 31 | sunFull=اتوار 32 | monFull=پير 33 | tueFull=منگل 34 | wedFull=بدھ 35 | thuFull=جمعرات 36 | friFull=جمعه 37 | satFull=هفته 38 | sunAbbr=اتوار 39 | monAbbr=پير 40 | tueAbbr=منگل 41 | wedAbbr=بدھ 42 | thuAbbr=جمعرات 43 | friAbbr=جمعه 44 | satAbbr=هفته 45 | -------------------------------------------------------------------------------- /src/sys/locale/uz.props: -------------------------------------------------------------------------------- 1 | dateTime=hh:mm:ss, DD MMMM, YYYY 'yil,' WWWW zzz 2 | date=DD/MM/YY 3 | time=hh:mm:ss 4 | float=#,###,###.0## 5 | decimal=#,###,###.0## 6 | int=#,###,### 7 | weekdayStart=sun 8 | janFull=Yanvar 9 | febFull=Fevral 10 | marFull=Mart 11 | aprFull=Aprel 12 | mayFull=May 13 | junFull=Iyun 14 | julFull=Iyul 15 | augFull=Avgust 16 | sepFull=Sentyabr 17 | octFull=Oktyabr 18 | novFull=Noyabr 19 | decFull=Dekabr 20 | janAbbr=Yan 21 | febAbbr=Fev 22 | marAbbr=Mar 23 | aprAbbr=Apr 24 | mayAbbr=May 25 | junAbbr=Iyn 26 | julAbbr=Iyl 27 | augAbbr=Avg 28 | sepAbbr=Sen 29 | octAbbr=Okt 30 | novAbbr=Noy 31 | decAbbr=Dek 32 | sunFull=Yakshanba 33 | monFull=Dushanba 34 | tueFull=Seshanba 35 | wedFull=Chorshanba 36 | thuFull=Payshanba 37 | friFull=Juma 38 | satFull=Shanba 39 | sunAbbr=Yak 40 | monAbbr=Du 41 | tueAbbr=Se 42 | wedAbbr=Cho 43 | thuAbbr=Pay 44 | friAbbr=Ju 45 | satAbbr=Sha -------------------------------------------------------------------------------- /src/sys/locale/zh.props: -------------------------------------------------------------------------------- 1 | dateTime=YYYY年MM月DD日 WWWW hh:mm:ss zzz 2 | date=YYYY年MM月DD日 WWWW 3 | time=kk時mm分ss秒 4 | float=#,###.0## 5 | decimal=#,###.0## 6 | int=#,### 7 | weekdayStart=sun 8 | janFull=一月 9 | febFull=二月 10 | marFull=三月 11 | aprFull=四月 12 | mayFull=五月 13 | junFull=六月 14 | julFull=七月 15 | augFull=八月 16 | sepFull=九月 17 | octFull=十月 18 | novFull=十一月 19 | decFull=十二月 20 | janAbbr=1月 21 | febAbbr=2月 22 | marAbbr=3月 23 | aprAbbr=4月 24 | mayAbbr=5月 25 | junAbbr=6月 26 | julAbbr=7月 27 | augAbbr=8月 28 | sepAbbr=9月 29 | octAbbr=10月 30 | novAbbr=11月 31 | decAbbr=12月 32 | sunFull=星期日 33 | monFull=星期一 34 | tueFull=星期二 35 | wedFull=星期三 36 | thuFull=星期四 37 | friFull=星期五 38 | satFull=星期六 39 | sunAbbr=日 40 | monAbbr=一 41 | tueAbbr=二 42 | wedAbbr=三 43 | thuAbbr=四 44 | friAbbr=五 45 | satAbbr=六 -------------------------------------------------------------------------------- /src/testDomkit/res/info-grey.svg: -------------------------------------------------------------------------------- 1 | 2 | info 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/testDomkit/res/info-white.svg: -------------------------------------------------------------------------------- 1 | 2 | info 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/testGraphics/fan/AbstractTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2022, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 14 Mar 2022 Brian Frank Creation 7 | // 8 | 9 | using graphics 10 | 11 | @Js 12 | abstract class AbstractTest 13 | { 14 | static Type[] list() 15 | { 16 | AbstractTest#.pod.types.findAll |t| { t.fits(AbstractTest#) && !t.isAbstract }.sort 17 | } 18 | 19 | Void paint(Size size, Graphics g) 20 | { 21 | g.color = Color("white") 22 | g.fillRect(0f, 0f, size.w-1f, size.h-1f) 23 | g.color = Color("black") 24 | g.drawRect(0f, 0f, size.w-1f, size.h-1f) 25 | onPaint(size, g) 26 | } 27 | 28 | abstract Void onPaint(Size size, Graphics g) 29 | } 30 | 31 | -------------------------------------------------------------------------------- /src/testGraphics/fan/ColorsTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2022, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2022 Brian Frank Creation 7 | // 8 | 9 | using graphics 10 | 11 | @Js 12 | class ColorsTest : AbstractTest 13 | { 14 | override Void onPaint(Size size, Graphics g) 15 | { 16 | keywords := Color.keywords.sort 17 | 18 | x := 10f 19 | y := 10f 20 | 21 | keywords.each |keyword| 22 | { 23 | g.color = Color(keyword) 24 | g.fillRect(x, y, 40f, 20f) 25 | g.color = Color.black 26 | g.drawRect(x, y, 40f, 20f) 27 | g.drawText(keyword, x+45, y+15f) 28 | 29 | y += 25f 30 | if (y + 30f > size.h) 31 | { 32 | x += 180f 33 | y = 10f 34 | } 35 | } 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /src/testGraphics/fan/Main.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2022, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 28 Feb 2022 Brian Frank Creation 7 | // 8 | 9 | using graphics 10 | using web 11 | using wisp 12 | 13 | class Main : Test 14 | { 15 | Void main(Str[] args := [,]) 16 | { 17 | launchDom 18 | launchJava(args.first) 19 | } 20 | 21 | Void launchDom() 22 | { 23 | WispService 24 | { 25 | it.httpPort = 8080 26 | it.root = MainDomMod() 27 | }.start 28 | } 29 | 30 | Void launchJava(Str? typeName) 31 | { 32 | MainJava.run(typeName) 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /src/testGraphics/res/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/testGraphics/res/test.jpg -------------------------------------------------------------------------------- /src/testGraphics/res/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantom-lang/fantom/d44a025dea34143d218d3c73cb6ee48150d001ea/src/testGraphics/res/test.png -------------------------------------------------------------------------------- /src/testGraphics/res/test.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/testJava/fan/JavaImplTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2025, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 19 May 25 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Run the tests written in Java itself 11 | ** 12 | class JavaImplTest : Test 13 | { 14 | native Void test() 15 | } 16 | 17 | -------------------------------------------------------------------------------- /src/testJava/fan/JavaTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 20 Nov 08 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Base class for Java compiler tests. 11 | ** 12 | abstract class JavaTest : testCompiler::CompilerTest 13 | { 14 | } 15 | 16 | -------------------------------------------------------------------------------- /src/testJava/java/JavaImplTestPeer.java: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2025, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 19 May 25 Brian Frank Creation 7 | // 8 | package fan.testJava; 9 | 10 | public class JavaImplTestPeer 11 | { 12 | public static JavaImplTestPeer make(JavaImplTest self) 13 | { 14 | return new JavaImplTestPeer(); 15 | } 16 | 17 | public void test(JavaImplTest self) 18 | { 19 | Test.test(""); 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/testNative/fan/NativeClass.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 12 May 10 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** NativeClass tests an entire native class, where the 11 | ** class is wholly implemented in Java, C#, etc 12 | ** 13 | native class NativeClass 14 | { 15 | new make() 16 | 17 | Int add(Int a, Int b) 18 | 19 | Str readResource(Str name) 20 | } -------------------------------------------------------------------------------- /src/testNative/java/Foo.java: -------------------------------------------------------------------------------- 1 | 2 | package bar.baz; 3 | 4 | import fan.sys.*; 5 | 6 | public class Foo 7 | { 8 | 9 | public Date today() { return Date.today(); } 10 | 11 | public String toString() { return getClass().getName(); } 12 | 13 | public static class Inner 14 | { 15 | public String toString() { return "Foo.Inner!"; } 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /src/testNative/res/foo.txt: -------------------------------------------------------------------------------- 1 | wombat -------------------------------------------------------------------------------- /src/testSys/concurrent/locale/fr.props: -------------------------------------------------------------------------------- 1 | // fr.props 2 | 3 | q=q fr 4 | p=p fr 5 | r=r fr 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/testSys/fan/Facets.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2010, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 3 Feb 10 Brian Frank Creation 7 | // 8 | 9 | @Js facet class FacetM1 {} 10 | @Js facet class FacetM2 {} 11 | 12 | @Js facet class FacetS1 13 | { 14 | const Str val := "alpha" 15 | } 16 | 17 | @Js facet class FacetS2 18 | { 19 | const Bool b 20 | const Int i 21 | const Str? s 22 | const Version? v 23 | const Int[]? l 24 | const Type? type 25 | const Slot? slot 26 | } -------------------------------------------------------------------------------- /src/testSys/locale/en-US.props: -------------------------------------------------------------------------------- 1 | // en.props 2 | 3 | a=a en-US 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/testSys/locale/en.props: -------------------------------------------------------------------------------- 1 | // en.props 2 | 3 | a=a en 4 | b=b en 5 | c=c en 6 | d=d en 7 | e=e en 8 | f=f en -------------------------------------------------------------------------------- /src/testSys/locale/es-MX.props: -------------------------------------------------------------------------------- 1 | // en.props 2 | 3 | a=a es-MX 4 | 5 | -------------------------------------------------------------------------------- /src/testSys/locale/es.props: -------------------------------------------------------------------------------- 1 | // en.props 2 | 3 | a=a es 4 | b=b es 5 | c=c es 6 | e=e es 7 | 8 | -------------------------------------------------------------------------------- /src/testSys/res/podtest.props: -------------------------------------------------------------------------------- 1 | barney=stinson -------------------------------------------------------------------------------- /src/testSys/res/test.txt: -------------------------------------------------------------------------------- 1 | hello world 2 | line 2 -------------------------------------------------------------------------------- /src/util/es/BoolArray.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 11 Jul 2023 Matthew Giannini Refactor for ES 8 | // 9 | 10 | /** 11 | * BoolArray. 12 | */ 13 | class BoolArray extends sys.Obj { 14 | typeof() { return BoolArray.type$; } 15 | } -------------------------------------------------------------------------------- /src/util/es/SecureRandomPeer.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * SecureRandom. 11 | */ -------------------------------------------------------------------------------- /src/util/es/SeededRandomPeer.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * SeededRandom. 11 | */ -------------------------------------------------------------------------------- /src/util/js/BoolArray.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * BoolArray. 11 | */ 12 | fan.util.BoolArray = fan.sys.Obj.$extend(fan.sys.Obj); 13 | 14 | fan.util.BoolArray.prototype.$ctor = function() {} 15 | fan.util.BoolArray.prototype.$typeof = function() { return fan.util.BoolArray.$type; } -------------------------------------------------------------------------------- /src/util/js/FloatArray.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * FloatArray. 11 | */ 12 | fan.util.FloatArray = fan.sys.Obj.$extend(fan.sys.Obj); 13 | 14 | fan.util.FloatArray.prototype.$ctor = function() {} 15 | fan.util.FloatArray.prototype.$typeof = function() { return fan.util.FloatArray.$type; } -------------------------------------------------------------------------------- /src/util/js/IntArray.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * IntArray. 11 | */ 12 | fan.util.IntArray = fan.sys.Obj.$extend(fan.sys.Obj); 13 | 14 | fan.util.IntArray.prototype.$ctor = function() {} 15 | fan.util.IntArray.prototype.$typeof = function() { return fan.util.IntArray.$type; } -------------------------------------------------------------------------------- /src/util/js/SecureRandomPeer.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * SecureRandom. 11 | */ -------------------------------------------------------------------------------- /src/util/js/SeededRandomPeer.js: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2023, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 17 Mar 2023 Matthew Giannini Creation 7 | // 8 | 9 | /** 10 | * SeededRandom. 11 | */ -------------------------------------------------------------------------------- /src/web/test/FilePackTest.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2020, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 11 May 2020 Brian Frank Creation 7 | // 8 | 9 | using concurrent 10 | 11 | ** 12 | ** FilePackTest 13 | ** 14 | class FilePackTest : Test 15 | { 16 | 17 | Void testPack() 18 | { 19 | buf := Buf() 20 | FilePack.pack([ 21 | "a\n".toBuf.toFile(`a.txt`), 22 | "b".toBuf.toFile(`b.txt`), 23 | "c\n".toBuf.toFile(`c.txt`), 24 | "".toBuf.toFile(`d.txt`), 25 | "e".toBuf.toFile(`e.txt`), 26 | ], buf.out) 27 | buf = buf.toImmutable 28 | verifyEq(buf.in.readAllStr, "a\nb\nc\ne\n") 29 | } 30 | } -------------------------------------------------------------------------------- /src/xml/build.fan: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env fan 2 | // 3 | // Copyright (c) 2008, Brian Frank and Andy Frank 4 | // Licensed under the Academic Free License version 3.0 5 | // 6 | // History: 7 | // 7 Nov 08 Brian Frank Creation 8 | // 9 | 10 | using build 11 | 12 | ** 13 | ** Build: xml 14 | ** 15 | class Build : BuildPod 16 | { 17 | new make() 18 | { 19 | podName = "xml" 20 | summary = "XML Parser and Document Modeling" 21 | meta = ["org.name": "Fantom", 22 | "org.uri": "https://fantom.org/", 23 | "proj.name": "Fantom Core", 24 | "proj.uri": "https://fantom.org/", 25 | "license.name": "Academic Free License 3.0", 26 | "vcs.name": "Git", 27 | "vcs.uri": "https://github.com/fantom-lang/fantom"] 28 | depends = ["sys 1.0"] 29 | srcDirs = [`fan/`, `test/`] 30 | docSrc = true 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /src/xml/fan/XIncompleteErr.fan: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2008, Brian Frank and Andy Frank 3 | // Licensed under the Academic Free License version 3.0 4 | // 5 | // History: 6 | // 7 Nov 08 Brian Frank Creation 7 | // 8 | 9 | ** 10 | ** Incomplete document exception indicates that the end of stream 11 | ** was reached before the end of the document was parsed. 12 | ** 13 | @Js const class XIncompleteErr : XErr 14 | { 15 | 16 | ** 17 | ** Construct with optional message, line number, and root cause. 18 | ** 19 | new make(Str? message := null, Int line := 0, Int col := 0, Err? cause := null) 20 | : super(message, line, col, cause) 21 | { 22 | } 23 | 24 | } 25 | --------------------------------------------------------------------------------