Doraku / DefaultDocumentation

Create a simple markdown documentation from the Visual Studio xml one.
MIT No Attribution
157 stars 26 forks source link

Extern links - not working #54

Closed Coobie closed 3 years ago

Coobie commented 3 years ago

Hi,

Firstly, I will start with saying that this is a very cool and useful tool!

I am having some issues using Extern links. The wording in the readme for it is not the best, however it looks like English isn't your first language so I will ignore that (although you probably want to get it checked).

So I have two projects one that generates a link file and the other consumes it. However, all I get is the following error message: image

From what I can see it is trying to add an item with a non-unique ID to the dictionary of items. So, I trimmed the link file to the bare minimum and still get the same error. After that I have copied your example from the readme:

http://extern/assembly/documentation/base/url/ T:ExternAssembly.ExternType|extern_type.html|ExternType M:ExternAssembly.ExternType.ExternMethod|extern_type_extern_method.html|ExternType ”

And still get the same error message. It is definitely reading the file as if all of the text is removed then it doesn’t result in an error.

I’m fairly certain I am not doing anything silly. Look forward to hearing back from you.

Cheers

Coobie.

Doraku commented 3 years ago

omg that part of the readme was so broken, I shouldn't try to write documentation late at night. Hopefully it is better now and it doesn't show as much as before that English is indeed not my first langage ^^".

As for the bug that was a really stupid mistake I probably introduced by a "clever" (>_>) refactoring after testing this feature... Thanks for bringing it up and sorry for the inconvenience!

Doraku commented 3 years ago

You can try the latest beta 0.7.4-beta2 with the fix.

Coobie commented 3 years ago

Thanks for the very quick response!

I will give it a go!

Coobie commented 3 years ago

@Doraku Works perfectly now, thanks very much!

Quick question, I notice that the layout has now changed to using tables rather than a listing. Are you now going this route or will the listing still be supported? I have nothing aginst the tables just would like to know. image

vs

image

Doraku commented 3 years ago

Yes I am still tuning this change so that's why I have only created a beta for now. At first the listing only showed the item names, it worked great but I thought it would be good for documentation clarity to also add the summary of the items like the official msdn api. Sadly there is no way to do it like that with markdown so I tried to mimic this style like in the first image. It's great when you have few members but starts to look like a mess when you have a lot of them. Thanks to some users feedback I am now trying the table approach by default. Below for comparison how it would look with the new style:

DefaultEcs

This is the full API documentation of DefaultEcs.

Namespaces

DefaultEcs Namespace

The DefaultEcs namespace contains types to put in place the Entity Component System pattern.

Classes
AoTHelper Provides a set of methods to help the generation of generic code for AoT compilation.
EntityMap<TKey> Represents a collection of Entity mapped to a TKey component. Only one Entity can be associated with a given TKey.
EntityMultiMap<TKey> Represents a collection of Entity mapped to a TKey component. Multiple Entity can be associated with a given TKey.
EntityQueryBuilder Represent an helper object to create rules to retrieve a specific subset of Entity.
EntityQueryBuilder.EitherBuilder Represents an helper object to create an either group rule to retrieve a specific subset of Entity.
EntityQueryBuilderExtension Provides set of static methods to create more easily rules on a EntityQueryBuilder instance.
EntitySet Represents a sub-selection of Entity instances from a World.
IPublisherExtension Provides set of static methods to automatically subscribe MessageHandler<T>(T) methods marked with the SubscribeAttribute on a IPublisher instance.
SubscribeAttribute Specifies that the method should be automatically subscribed when its parent type or instance is called with IPublisherExtension.
The decorated method should be of the type MessageHandler<T>(T).
World Represents a item used to create and manage Entity objects.
Structs
Components<T> Provides a fast access to the components of type T.
Entity Represents an item in the World.
Only use Entity generated from the [CreateEntity()](World_CreateEntity().md 'DefaultEcs.World.CreateEntity()') method.
EntityMap<TKey>.KeyEnumerable Allows to enumerate the TKey of a EntityMap<TKey>.
EntityMap<TKey>.KeyEnumerator Enumerates the TKey of a EntityMap<TKey>.
EntityMultiMap<TKey>.KeyEnumerable Allows to enumerate the TKey of a EntityMultiMap<TKey>.
EntityMultiMap<TKey>.KeyEnumerator Enumerates the TKey of a EntityMultiMap<TKey>.
World.Enumerator Enumerates the Entity of a World.
Interfaces
IPublisher Exposes methods to subscribe to MessageHandler<T>(T) and publish message to callback those subscriptions.
Delegates
ComponentAddedHandler<T>(Entity, T) Represents the method that will called when a component of type T is added on an Entity.
ComponentChangedHandler<T>(Entity, T, T) Represents the method that will called when a component of type T is removed from an Entity.
ComponentDisabledHandler<T>(Entity, T) Represents the method that will called when a component of type T is disabled on an Entity.
ComponentEnabledHandler<T>(Entity, T) Represents the method that will called when a component of type T is enabled on an Entity.
ComponentPredicate<T>(T) Represents the method that defines a set of criteria and determines whether the specified component meets those criteria.
ComponentRemovedHandler<T>(Entity, T) Represents the method that will called when a component of type T is removed from an Entity.
EntityCreatedHandler(Entity) Represents the method that will called when an Entity is created.
EntityDisabledHandler(Entity) Represents the method that will called when an Entity is disabled.
EntityDisposedHandler(Entity) Represents the method that will called when an Entity is disposed.
EntityEnabledHandler(Entity) Represents the method that will called when an Entity is enabled.
MessageHandler<T>(T) Encapsulates a method that has a single in parameter and does not return a value used for Subscribe<T>(MessageHandler<T>) method.
WorldDisposedHandler(World) Represents the method that will called when a World is created.

DefaultEcs.Command Namespace

The DefaultEcs.Command namespace contains types used in the recording and deferred execution of modifications on entities.

Classes
EntityCommandRecorder Represents a buffer of structural modifications to apply on Entity to record as postoned commands.
Structs
EntityRecord Represents an Entity on which to create commands to record in a EntityCommandRecorder.

DefaultEcs.Resource Namespace

The DefaultEcs.Resource namespace contains types used in the loading of unmanaged resources needed as components.

Classes
AResourceManager<TInfo,TResource> Base type used to load resources of type TResource using info of type TInfo.
TInfo is used as key if the same resource is requested on multiple Entity to only load the TResource resource once.
If no Entity contains the ManagedResource<TInfo,TResource> component identifying the resource anymore, the TResource instance is then unloaded automatically.
By default, if TResource is System.IDisposable, Unload(TInfo, TResource) will call the System.IDisposable.Dispose method of the resource.
ManagedResource<TResource> Provides static methods for creating ManagedResource<TInfo,TResource> object.
Structs
AResourceManager<TInfo,TResource>.ResourceEnumerable Allows to enumerate the resources of a AResourceManager<TInfo,TResource>.
AResourceManager<TInfo,TResource>.ResourceEnumerator Enumerates the resources of a AResourceManager<TInfo,TResource>.
ManagedResource<TInfo,TResource> Component type used to load managed resource with a AResourceManager<TInfo,TResource>.

DefaultEcs.Serialization Namespace

The DefaultEcs.Serialization namespace contains types used to save and load DefaultEcs objects.

Classes
BinarySerializationContext Represents a context used by the BinarySerializer to convert types during serialization and deserialization operations.
The context marshalling will not be applied on members of unmanaged type as BinarySerializer just past their memory location with no transformation.
BinarySerializer Provides a basic implementation of the ISerializer interface using a binary format.
ISerializerExtension Provides extension methods to the ISerializer type.
TextSerializationContext Represents a context used by the TextSerializer to convert types during serialization and deserialization operations.
TextSerializer Provides a basic implementation of the ISerializer interface using a text readable format.
Interfaces
IComponentReader Exposes a method to be called back when getting an Entity components, primarly used for serialization purpose.
IComponentTypeReader Exposes a method to be called back when getting the maximum number of component of a World, primarly used for serialization purpose.
ISerializer Provides a set of methods to save and load DefaultEcs objects.

DefaultEcs.System Namespace

The DefaultEcs.System namespace contains types to define workflows of modification on entities and components.

Classes
AComponentSystem<TState,TComponent> Represents a base class to process updates on a given World instance to all its components of type TComponent.
ActionSystem<T> Represents a class to set up easily a custom action as a system update.
AEntityMultiMapSystem<TState,TKey> Represents a base class to process updates on a given EntityMultiMap<TKey> instance.
AEntitySetSystem<T> Represents a base class to process updates on a given EntitySet instance.
Only [Get<T>()](Entity_GetT().md 'DefaultEcs.Entity.Get<T>()'), Set<T>(T) and SetSameAs<T>(Entity) operation on already present component type are safe.
ComponentAttribute Represents the base attribute to declare how to build the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
Do not use this attribute, prefer WithAttribute and WithoutAttribute instead.
DisabledAttribute Makes so when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance, it will only contain disabled entities.
ParallelSystem<T> Represents a collection of ISystem<T> to update in parallel.
SequentialSystem<T> Represents a collection of ISystem<T> to update sequentially.
WhenAddedAttribute Represents a component type to react to its addition when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WhenAddedEitherAttribute Represents a group of component types to react to at least one of their addition when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WhenChangedAttribute Represents a component type to react to its change when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WhenChangedEitherAttribute Represents a group of component types to react to at least one of their change when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WhenRemovedAttribute Represents a component type to react to its deletion when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WhenRemovedEitherAttribute Represents a group of component types to react to at least one of their deletion when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WithAttribute Represents a component type to include when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WithEitherAttribute Represents a group of component types which at least one should be present when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WithoutAttribute Represents a component type to exclude when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WithoutEitherAttribute Represents a group of component types which at least one should not be present when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance.
WithPredicateAttribute Makes so when building the inner EntitySet of AEntitySetSystem<T> when giving a World instance, the decorated method will be used as a component predicate.
The decorated method should be of the type ComponentPredicate<T>(T).
Interfaces
ISystem<T> Exposes a method to update a system.
Enums
ComponentFilterType Specifies which filter rule should be applied when using a ComponentAttribute.

DefaultEcs.Threading Namespace

The DefaultEcs.Threading namespace contains types used for multithreading operations.

Classes
DefaultParallelRunner Represents an object used to run an IParallelRunnable by using multiple System.Threading.Tasks.Task.
Interfaces
IParallelRunnable Exposes a method to run a process in parallel.
IParallelRunner Exposes a method to run in parallel a IParallelRunnable.
Doraku commented 3 years ago

In case you really want to keep the listing format, once #4 is done (slowly getting there) you will be able to change the default template to display members as a list like before :)

Coobie commented 3 years ago

Sounds like that will keep you very busy!

Thanks again!