|
//
// ___ _____ ___ ___ __ __
// / __|_ _/ _ \| _ \ \/ |
// \__ \ | || (_) | / |\/| |
// |___/ |_| \___/|_|_\_| |_|
//
// Storm.TextEditor.dll
// ��������������������
// Storm.TabControl.dll was created under the LGPL
// license. Some of the code was created from scratch,
// some was not. Code not created from scratch was
// based on the DotNetFireball framework and evolved
// from that.
//
// What I mostly did in this library was that I
// cleaned up the code, structured it, documentated
// it and added new features.
//
// Although it might not sound like it, it was very
// hard and took a long (pretty much a shitload)
// time. Why? Well, this was* some of the crappiest,
// most unstructured, undocumentated, ugly code I've
// ever seen. It would actually have taken me less
// time to create it from scratch, but I figured that
// out too late. Figuring out what the code actually
// did and then documentating it was (mostly) a
// day-long process. Well, I hope you enjoy some of
// my hard work. /rant
//
// Of course some/most of it is made from scratch by me.
// *Yes, was. It isn't now. :) Some of the naming
// conventions might still seem a little bit off though.
//
// What is Storm?
// ��������������
// Storm is a set of dynamic link libraries used in
// Theodor "Vestras" Storm Kristensen's application
// "Moonlite".
//
//
// Thanks:
// �������
// - The DotNetFireball team for creating and publishing
// DotNetFireball which I based some of my code on.
//
//
// Copyright (c) Theodor "Vestras" Storm Kristensen 2009
// �����������������������������������������������������
//
namespace Storm.TextEditor.Parsing.Language
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Design;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.Design;
using System.Diagnostics.SymbolStore;
using System.IO;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Windows.Forms;
using Storm.TextEditor;
using Storm.TextEditor.Controls;
using Storm.TextEditor.Controls.Core;
using Storm.TextEditor.Controls.Core.Globalization;
using Storm.TextEditor.Controls.Core.Timers;
using Storm.TextEditor.Controls.IntelliMouse;
using Storm.TextEditor.Document;
using Storm.TextEditor.Document.Exporters;
using Storm.TextEditor.Forms;
using Storm.TextEditor.Interacting;
using Storm.TextEditor.Painting;
using Storm.TextEditor.Parsing;
using Storm.TextEditor.Parsing.Base;
using Storm.TextEditor.Parsing.Classes;
using Storm.TextEditor.Parsing.Language;
using Storm.TextEditor.Preset;
using Storm.TextEditor.Preset.Painting;
using Storm.TextEditor.Preset.TextDraw;
using Storm.TextEditor.Printing;
using Storm.TextEditor.Utilities;
using Storm.TextEditor.Win32;
public class LanguageList: IEnumerable
{
Dictionary<string,Language> _Languages=new Dictionary<string,Language>();
public Language GetFromIndex(int index)
{
if (index >= 0 && index < _Languages.Count)
{
string[] keys = new string[_Languages.Keys.Count];
_Languages.Keys.CopyTo(keys, 0);
return _Languages[ keys[index]];
}
return null;
}
public Language GetLanguageFromName(string name)
{
if (!_Languages.ContainsKey(name))
return null;
return _Languages[name];
}
public void Add(Language lang)
{
if (!_Languages.ContainsKey(lang.Name))
_Languages.Add(lang.Name, lang);
}
public Language GetLanguageFromFile(string path)
{
string extension= System.IO.Path.GetExtension (path);
foreach (Language lang in _Languages.Values)
foreach (FileType ft in lang.FileTypes)
if (extension.ToLower () == ft.Extension.ToLower ())
return lang;
return null;
}
public System.Collections.IEnumerator ListLanguages()
{ return _Languages.GetEnumerator(); }
/// <summary>
/// Initializes the LanguageList.
/// </summary>
public LanguageList()
{
}
/// <summary>
/// Initializes the LanguageList.
/// </summary>
public LanguageList(string directory, string ext)
{
string[] files = Directory.GetFiles(directory, ext);
foreach (string file in files)
{
SyntaxLoader l = new SyntaxLoader();
Language lng = l.Load(file);
if (!_Languages.ContainsKey(lng.Name))
_Languages.Add(lng.Name, lng);
}
}
#region IEnumerable Members
public IEnumerator GetEnumerator()
{ return _Languages.GetEnumerator(); }
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.