C# 클래스 SIL.FieldWorks.UnicodeCharEditor.PUAInstaller

파일 보기 프로젝트 열기: sillsdev/FieldWorks 1 사용 예제들

Private Properties

프로퍼티 타입 설명
AddTempFile void
AddToLists void
AddUndoFileFrame void
CheckForIcuLocked bool
CreateXxFile string
GetField string
GetIcuExecutable string
HasBidiData bool
IncrementCount void
InsertCharacters void
LogCodepoint void
MakeDebugBidifiles void
ModifyUCDFile void
ParseCustomCharsFile void
ReadToEndOfSection string
RemoveTempFiles void
RunProcess void
SubHex int
UpdateUCDFile void
WriteBidiCodepointBlock void
WriteBidiRange void
WriteCodepointBlock void
WriteRange void
WriteUnicodeDataLine void

공개 메소드들

메소드 설명
AddHex ( string hex, int num ) : string

Adds a number to a hex string

AddUCDLine ( TextWriter writer, IUcdCharacter ucdCharacter, bool add ) : void

Adds/"deletes" a given puaCharacter to the given TextWriter Will write a DerivedBidiClass.txt style line.

BackupOrig ( string inputFilespec ) : string

Create the "original" (backup) copy of the file to be modified, if it doesn't already exist.

ChangeFileExtension ( string inputFilespec, string newExtension ) : string

Replace the file extension with 'newExtension'.

CreateBackupFile ( string inputFilespec ) : string

This method will create the backup of the original input file.

CreateNewFileName ( string inputFilespec, string nameSplice ) : string

This method appends 'nameSplice' to a file 'inputFilespec'.

CreateTempFile ( string inputFilespec ) : string

This method will create the temporary work file copy of the original input file.

DeleteFile ( string file ) : bool

FileCopyWithLogging ( string inName, string outName, bool overwrite ) : void

GetProperty ( string line ) : string

Reads the Property value from the given line of a UCD text file. (For example, if the text file is DerivedBidiClass.txt, this reads the bidi class value from the given line of a DerivedBidiClass.txt file.)

InstallPUACharacters ( string filename ) : void

Installs the PUA characters (PUADefinitions) from the given xml file We do this by: 1. Maps the XML file to a list of PUACharacter objects 2. Sorts the PUA characters 3. Opens UnicodeDataOverrides.txt for reading and writing 4. Inserts the PUA characters via their codepoints 5. Regenerate nfc.txt and nfkc.txt, the input files for gennorm2, which generates the ICU custom normalization files. 6. Run "gennorm2" to create the actual binary files used by the ICU normalization functions.

MakeOrigFileName ( string inputFilespec ) : string

Given a regular file name, this method returns the file name that is used for storing the 'origional' version of the file.

RemoveBackupFiles ( ) : void

Remove the backup files that were created to restore original files if there were a problem. If this method is called, there was no problem. We're just removing the backup file - much like a temp file at this point.

RestoreFiles ( ) : void

Copies the backup files over the source files and then deletes the backup files.

RestoreOrigFiles ( string directoryName, string extension, bool removeOrig ) : int

RunICUTools ( string unidataDir, string nfcOverridesFileName, string nfkcOverridesFileName ) : void

This runs genprops and gennames in order to use UnicodeData.txt, DerivedBidiClass.txt, as well as other *.txt files in unidata to create icuprefix/uprops.icu and other binary data files.

SafeDeleteFile ( string file ) : bool

SafeFileCopyWithLogging ( string inName, string outName, bool overwrite ) : void

StillInRange ( int codeIndex, List ucdCharacters, string currentBidiClass ) : bool

Checks to make sure the given codeIndex is within the current bidi section. Performs bounds checking as well.

UndoCreateNewFileName ( string savedName, string backupPortion ) : string

비공개 메소드들

메소드 설명
AddTempFile ( string strFile ) : void

Add a file to the list of temporary files.

AddToLists ( string line, IPuaCharacter puaDefinition, List addToBidi, List removeFromBidi, List addToNorm, List removeFromNorm ) : void

Checks whether the IPuaCharacter needs to be added to the lists, and adds if necessary.

AddUndoFileFrame ( string srcFile, string backupFile ) : void

Create a copy of the backup and source file names for future use.

CheckForIcuLocked ( string inputLocale, bool runSilent, CallingID caller ) : bool

Check for locked ICU files and return

CreateXxFile ( string inputFilespec, string suffix ) : string

This method will create the temporary work file copy of the original input file.

GetField ( string line, int field ) : string

Retrieves the given field from the given UnicodeData.txt line

GetIcuExecutable ( string exeName ) : string
HasBidiData ( string line ) : bool

returns true if the line is not just a comment i.e if it is of either of the following forms ------- ; ------ # ------ ------- ; ------- NOT ----- # ----- ; ------

IncrementCount ( int &currentCount, string line ) : void

Given a line containing a valid code or code range, increments the count to include the code or code range. Uses XXXX..YYYY style range.

InsertCharacters ( IPuaCharacter puaDefinitions, string originalOverrides, string customOverrides ) : void

Inserts the given PUADefinitions (any Unicode character) into the UnicodeData.txt file. This accounts for all the cases of inserting into the "first/last" blocks. That is, it will split the blocks into two or move the first and last tags to allow a codepoint to be inserted correctly. Also, this accounts for Hexadecimal strings that are within the unicode range, not just four digit unicode files. Assumptions made about the format The codepoints are in order There first last block will always have no space between the word first and the following ">" No other data entries contain the word first followed by a ">" There will always be a "last" on the line directly after a "first".

Pseudocode for inserting lines: if the unicodePoint is a first tag Get first and last uncodePoint range Stick into array all the xmlPoints that fit within the uncodePoint range Look at the next xmlPoint if there are any call WriteCodepointBlock subroutine else if the unicodePoint is greater than the last point but less than or equal to "the xmlPoint" insert the missing line or replace the line look at the next xmlPoint else do nothing except write the line

LogCodepoint ( string code ) : void

Prints a message to the console when storing a Unicode character.

MakeDebugBidifiles ( StringWriter stringWriter, IEnumerable addToBidi, IEnumerable removeFromBidi ) : void

Makes three debug files for the DerivedBidiClass.txt: A: Saves the "in-between" state (after deleting, before adding) B: Saves a list of what we are adding and deleting. C: Saves an actual file that doesn't add or delete anything. This will update the numbers, but won't do anything else

ModifyUCDFile ( TextReader tr, TextWriter tw, List ucdCharacters, bool add ) : void

This function will add or remove the given PUA characters from the given DerivedBidiClass.txt file by either inserting or not inserting them as necessary as it reads through the file in a single pass from tr to tw.

Assumptions The like Bidi values are grouped together Non Assumptions: That comments add any information to the file. We don't use comments for parsing. That "blank" lines appear only between different bidi value sections. That the comments should be in the format: # field2 [length of range] Name_of_First_Character..Name_of_Last_Charachter (If it is not, we'll just ignore.

ParseCustomCharsFile ( string filename ) : void
ReadToEndOfSection ( TextReader reader, TextWriter writer, string lastProperty, int currentCount, IUcdCharacter ucdCharacter ) : string

Read to the end of a given section of matching bidi class values. Passes everything read through to the writer. If this finds a section count comment, it will replace it with the current count.

RemoveTempFiles ( ) : void

Delete all files in the list of temporary files.

RunProcess ( string executable, string args ) : void
SubHex ( string hex, string hex2 ) : int

Subtracts two hex numbers and returns an integer value of their difference. i.e. returns an int representing hex-hex2

UpdateUCDFile ( List addToUCD, List removeFromUCD ) : void

Updates a UCD style file as necessary. so that the entries match the ones we just inserted into UnicodeData.txt.

A UCD file is a "Unicode Character Database" text file. The specific documentation can be found at: http://www.unicode.org/Public/UNIDATA/UCD.html#UCD_File_Format

WriteBidiCodepointBlock ( TextWriter writer, string originalBeginningCode, string originalEndCode, List codepointsWithinRange, string generalCategory, string firstName, string lastName, bool add ) : void

Write a codepoint block, inserting the necessary codepoints properly.

WriteBidiRange ( TextWriter writer, string beginning, string end, string generalCategory, string firstName, string lastName, string bidiValue ) : void

Writes a block representing a range given first and last. If first is not before last, it will do the appropriate printing.

WriteCodepointBlock ( StreamWriter writer, string blockName, string beginning, string end, IEnumerable puaCharacters, string data, List addToBidi, List removeFromBidi, List addToNorm, List removeFromNorm ) : void

Write a codepoint block, inserting the necessary codepoints properly.

WriteRange ( StreamWriter writer, string beginning, string end, string name, string data ) : void

Writes a block representing a range given first and last. If first is not before last, it will do the appropriate printing.

WriteUnicodeDataLine ( IPuaCharacter puaChar, TextWriter tw ) : void

Writes a UnicodeData.txt style line including comments.

메소드 상세

AddHex() 공개 정적인 메소드

Adds a number to a hex string
public static AddHex ( string hex, int num ) : string
hex string The hex string you want to add
num int The number you want to add to the string
리턴 string

AddUCDLine() 공개 메소드

Adds/"deletes" a given puaCharacter to the given TextWriter Will write a DerivedBidiClass.txt style line.
public AddUCDLine ( TextWriter writer, IUcdCharacter ucdCharacter, bool add ) : void
writer System.IO.TextWriter
ucdCharacter IUcdCharacter The character to add or delete
add bool
리턴 void

BackupOrig() 공개 정적인 메소드

Create the "original" (backup) copy of the file to be modified, if it doesn't already exist.
public static BackupOrig ( string inputFilespec ) : string
inputFilespec string This is the file to make a copy of.
리턴 string

ChangeFileExtension() 공개 정적인 메소드

Replace the file extension with 'newExtension'.
public static ChangeFileExtension ( string inputFilespec, string newExtension ) : string
inputFilespec string Input file name to modify.
newExtension string The new file Extension.
리턴 string

CreateBackupFile() 공개 정적인 메소드

This method will create the backup of the original input file.
public static CreateBackupFile ( string inputFilespec ) : string
inputFilespec string This is the file to make a backup of.
리턴 string

CreateNewFileName() 공개 정적인 메소드

This method appends 'nameSplice' to a file 'inputFilespec'.
public static CreateNewFileName ( string inputFilespec, string nameSplice ) : string
inputFilespec string Input file name to modify.
nameSplice string The 'text' to append to the file name before the /// extension.
리턴 string

CreateTempFile() 공개 정적인 메소드

This method will create the temporary work file copy of the original input file.
public static CreateTempFile ( string inputFilespec ) : string
inputFilespec string This is the file to make a copy of.
리턴 string

DeleteFile() 공개 정적인 메소드

public static DeleteFile ( string file ) : bool
file string
리턴 bool

FileCopyWithLogging() 공개 정적인 메소드

public static FileCopyWithLogging ( string inName, string outName, bool overwrite ) : void
inName string
outName string
overwrite bool
리턴 void

GetProperty() 공개 정적인 메소드

Reads the Property value from the given line of a UCD text file. (For example, if the text file is DerivedBidiClass.txt, this reads the bidi class value from the given line of a DerivedBidiClass.txt file.)
public static GetProperty ( string line ) : string
line string A line from a UCD file in the following format: /// code;Property[; other] [ # other]
리턴 string

InstallPUACharacters() 공개 메소드

Installs the PUA characters (PUADefinitions) from the given xml file We do this by: 1. Maps the XML file to a list of PUACharacter objects 2. Sorts the PUA characters 3. Opens UnicodeDataOverrides.txt for reading and writing 4. Inserts the PUA characters via their codepoints 5. Regenerate nfc.txt and nfkc.txt, the input files for gennorm2, which generates the ICU custom normalization files. 6. Run "gennorm2" to create the actual binary files used by the ICU normalization functions.
public InstallPUACharacters ( string filename ) : void
filename string Our XML file containing our PUA Defintions
리턴 void

MakeOrigFileName() 공개 정적인 메소드

Given a regular file name, this method returns the file name that is used for storing the 'origional' version of the file.
public static MakeOrigFileName ( string inputFilespec ) : string
inputFilespec string
리턴 string

RemoveBackupFiles() 공개 메소드

Remove the backup files that were created to restore original files if there were a problem. If this method is called, there was no problem. We're just removing the backup file - much like a temp file at this point.
public RemoveBackupFiles ( ) : void
리턴 void

RestoreFiles() 공개 메소드

Copies the backup files over the source files and then deletes the backup files.
public RestoreFiles ( ) : void
리턴 void

RestoreOrigFiles() 공개 정적인 메소드

public static RestoreOrigFiles ( string directoryName, string extension, bool removeOrig ) : int
directoryName string
extension string
removeOrig bool
리턴 int

RunICUTools() 공개 메소드

This runs genprops and gennames in order to use UnicodeData.txt, DerivedBidiClass.txt, as well as other *.txt files in unidata to create icuprefix/uprops.icu and other binary data files.
public RunICUTools ( string unidataDir, string nfcOverridesFileName, string nfkcOverridesFileName ) : void
unidataDir string
nfcOverridesFileName string
nfkcOverridesFileName string
리턴 void

SafeDeleteFile() 공개 정적인 메소드

public static SafeDeleteFile ( string file ) : bool
file string
리턴 bool

SafeFileCopyWithLogging() 공개 정적인 메소드

public static SafeFileCopyWithLogging ( string inName, string outName, bool overwrite ) : void
inName string
outName string
overwrite bool
리턴 void

StillInRange() 공개 메소드

Checks to make sure the given codeIndex is within the current bidi section. Performs bounds checking as well.
public StillInRange ( int codeIndex, List ucdCharacters, string currentBidiClass ) : bool
codeIndex int The index of a PUA character in puaCharacters
ucdCharacters List The list of PUA characters
currentBidiClass string The current bidi class value. If puaCharacters[codeIndex] doesn't match this we aren't in range.
리턴 bool

UndoCreateNewFileName() 공개 정적인 메소드

public static UndoCreateNewFileName ( string savedName, string backupPortion ) : string
savedName string
backupPortion string
리턴 string